Unity导出AAR库导入Android项目启动UnityPlayerActivity报错libmain.so未找到
解决Unity AAR导入Android项目后libmain.so找不到的问题
可能原因及解决方案
1. 确认AAR中是否包含libmain.so
- 将生成的Unity AAR文件后缀改为
.zip并解压,查看jni目录下对应CPU架构(如armeabi-v7a、arm64-v8a)的文件夹里是否存在libmain.so。 - 如果AAR里没有该文件,说明Unity导出或打包AAR时遗漏了:
- 重新从Unity导出Android项目,导出时在
Player Settings -> Other Settings -> Configuration -> Scripting Backend选择IL2CPP,并勾选需要的Target Architectures。 - 回到导出的Android项目,确认
libs目录下有对应架构的so库,再重新打包AAR。
- 重新从Unity导出Android项目,导出时在
2. 统一宿主项目与AAR的ABI配置
- 在宿主Android项目的Module级build.gradle中,配置与Unity导出时一致的ABI过滤,避免架构不匹配:
android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' // 与Unity导出的架构保持一致 } } }
- 确保
gradle.properties中没有禁用NDK相关配置,移除类似android.useDeprecatedNdk=true的旧配置。
3. 确保AAR打包时正确包含so库
- 在Unity导出的Android项目的Module级build.gradle中,确认
sourceSets配置正确,保证libs目录下的so库被打包进AAR:
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
- 重新打包AAR,确保so库被包含在内。
4. 检查宿主项目对AAR的依赖配置
- 如果是手动导入AAR,将AAR文件放在宿主项目的
libs目录下,然后在Module级build.gradle中添加依赖:
dependencies { implementation files('libs/your-unity-aar-file.aar') }
- 若使用本地Maven仓库,确保依赖路径正确,so库能被自动合并到宿主APK中。
5. 清理并重建项目
- 执行
Build -> Clean Project清除缓存,再执行Build -> Rebuild Project重新编译整个项目,之后重新运行宿主应用。
内容的提问来源于stack exchange,提问作者Kunal Kalwar
相关产品推荐
相关产品推荐

