You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android jniLibs中带版本号的.so文件未打包进APK问题

问题解答

1. 现象产生的原因

Android Gradle插件(AGP)默认遵循Android平台的共享库命名规范:仅识别lib<库名>.so格式的文件作为可打包的原生库。带有版本后缀(如.6)的libsycl.so.6不符合这一默认命名规则,因此会被构建工具忽略,不会自动复制到APK的lib目录中。而libsample.so符合标准命名,所以能正常被打包。

2. 打包libsycl.so.6的修改方案

方案一:修改AGP的资源包含规则

在Module级别的build.gradle的android代码块中添加sourceSets配置,扩展jniLibs的文件匹配规则,让AGP包含所有带版本后缀的.so文件:

android {
    // 保留原有所有配置...
    sourceSets {
        main {
            jniLibs {
                include '**/lib*.so*' // 匹配所有以lib开头、.so结尾(含版本后缀)的文件
            }
        }
    }
}

方案二:通过CMake配置处理(若该库由CMake构建)

如果libsycl.so.6是项目中通过CMake编译生成的库,可通过以下两种方式调整:

  1. 生成不带版本后缀的库,修改CMakeLists.txt中的目标属性:
add_library(sycl SHARED src/sycl.cpp)
set_target_properties(sycl PROPERTIES VERSION "" SOVERSION "")
  1. 若必须保留版本后缀,添加安装规则将文件复制到jniLibs目录:
install(TARGETS sycl 
        LIBRARY DESTINATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})

内容的提问来源于stack exchange,提问作者harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:44