AAR格式SDK集成问题:.so文件在APK中存在但安装后未到lib/arm64
解决AAR中.so文件安装后未复制到lib/arm64目录的问题
可能的原因及修复方案
1. 检查APP的ABI过滤配置
你的项目可能限制了支持的ABI架构,导致arm64-v8a的.so被过滤掉。在模块级build.gradle.kts中查看是否存在ndk.abiFilters配置,若只指定了armeabi-v7a而未包含arm64-v8a,就会出现这个问题。
修复示例:
android { defaultConfig { ndk { abiFilters += listOf("armeabi-v7a", "arm64-v8a") } } }
2. 验证AAR文件的完整性
将你使用的AAR文件后缀改为.zip并解压,检查内部是否存在jni/arm64-v8a目录及对应的.so文件。若该目录缺失,说明你拷贝的AAR文件和官方示例使用的不一致,重新从官方示例项目中拷贝正确的AAR到自己项目的libs目录。
3. 检查ABI拆分打包配置
如果项目开启了ABI拆分打包,可能生成了多个对应不同架构的APK,你安装的恰好是不包含arm64-v8a的版本。查看模块级build.gradle.kts中的splits配置:
android { splits { abi { enable = true reset() include("armeabi-v7a", "arm64-v8a") universalApk = true // 生成包含所有ABI的通用APK,方便测试验证 } } }
若开启了拆分,确保安装的是对应arm64-v8a的APK,或者开启universalApk生成通用包来测试。
4. 清理并重建项目
缓存异常也可能导致该问题,执行以下操作:
- 点击Android Studio顶部菜单栏的
Build->Clean Project - 接着执行
Build->Rebuild Project - 卸载设备/模拟器上已安装的旧版本APP,重新安装新构建的APK
5. 调整依赖引入方式
虽然官方使用了api fileTree(dir: 'libs', include: ['*.aar']),但也可以尝试直接指定单个AAR文件引入,避免fileTree匹配异常:
dependencies { api(files("libs/your-sdk-filename.aar")) }
内容的提问来源于stack exchange,提问作者tungd
相关产品推荐
相关产品推荐

