如何在Android Studio 2023的x86_64 AVD上测试纯ARM应用并禁用拆分APK
解决Android Studio 2023构建纯ARM应用适配x86_64 AVD的问题
一、强制生成包含ARM架构的通用APK
在app模块的build.gradle中添加以下配置,关闭ABI拆分并指定仅打包ARM架构的SO库:
android { // 保留原有配置,添加以下内容 // 关闭ABI拆分,避免生成按架构拆分的APK splits { abi { enable false } } defaultConfig { ndk { // 指定仅打包项目支持的ARM架构 abiFilters 'armeabi-v7a', 'arm64-v8a' } } // 确保生成通用APK并自定义文件名(可选) applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFileName = "app-${variant.name}-universal-arm.apk" } } }
配置说明:
- 关闭
splits.abi.enable会阻止Gradle生成按架构拆分的APK,转而生成包含所有指定ABI的通用包。 abiFilters明确指定仅打包ARM架构的SO库,避免Gradle尝试寻找x86_64的库文件。
二、让Android Studio识别x86_64 AVD的ARM兼容能力
方法1:手动指定运行配置的目标ABI
- 点击Android Studio右上角的运行配置下拉框,选择「Edit Configurations」。
- 在打开的窗口中,找到当前应用的运行配置,切换到「General」标签页。
- 滚动到「Installation Options」区域,找到「ABI」选项,选择项目支持的ARM架构(
armeabi-v7a或arm64-v8a)。 - 保存配置后,重新运行应用,Android Studio会强制构建ARM架构的APK并安装到x86_64 AVD,系统会自动启用ARM翻译层运行。
方法2:修改AVD配置模拟ARM环境
- 找到AVD的配置文件,路径通常为
~/.android/avd/[你的AVD名称]/config.ini(Windows系统路径为C:\Users\[你的用户名]\.android\avd\[你的AVD名称]\config.ini)。 - 打开文件,添加或修改以下配置:
abi.type=armeabi-v7a hw.cpu.model=cortex-a53
- 重启Android Studio和AVD,此时AS会识别该设备为ARM架构的模拟器,自动构建ARM包进行部署。
三、解决libhv.so找不到的问题
出现dlopen failed: library "libhv.so" not found错误的核心原因是:未指定abiFilters时,Gradle会尝试打包x86架构的APK,但项目没有对应的x86版本SO库。
通过上述步骤1的Gradle配置,指定仅打包ARM架构的SO库并关闭ABI拆分,生成的通用APK会包含armeabi-v7a和arm64-v8a版本的libhv.so,安装到x86_64 AVD后,系统的ARM翻译层会正常加载该库。
内容的提问来源于stack exchange,提问作者Simone Avogadro
相关产品推荐
相关产品推荐

