含原生代码的App经Google Play Bundle拆分后无法运行,求解决方案
解决Google Play App Bundle架构拆分问题的方案
禁用ABI拆分并确保包含32/64位架构
在模块级build.gradle(Groovy)或build.gradle.kts(Kotlin)的android代码块中添加以下配置,强制App Bundle包含所有指定架构的原生库,同时满足Google对32位和64位架构的要求:Groovy配置示例:
android { // 其他已有配置 bundle { abi { enabled = false // 关闭ABI拆分,Bundle将包含所有指定架构的库 } } ndk { abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' } }Kotlin DSL配置示例:
android { // 其他已有配置 bundle { abi { isEnabled = false } } ndk { abiFilters += listOf("x86", "x86_64", "armeabi-v7a", "arm64-v8a") } }这样生成的App Bundle会包含所有指定架构的原生库,Google Play将提供通用APK(包含所有架构)供用户下载,既符合32/64位要求,又避免了拆分后的加载问题。
检查原生库加载逻辑
确保App加载原生库时使用System.loadLibrary("your-library-name"),不要硬编码文件路径。系统会自动根据设备架构从正确的目录加载对应的库文件,硬编码路径容易导致拆分后找不到库的问题。验证App Bundle内容
使用bundletool工具生成通用APK并检查内容,确认所有架构的原生库都已正确打包:bundletool build-apks --bundle=your-app.aab --output=your-app.apks --mode=universal解压生成的
your-app.apks中的universal APK,查看lib目录下是否存在x86、x86_64、armeabi-v7a、arm64-v8a四个文件夹及对应的.so文件,确保打包无误。
内容的提问来源于stack exchange,提问作者Sajjad Akbari
相关产品推荐
相关产品推荐

