You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在官方Android模拟器安装libhoudini并运行含ARM .so库的应用

解决官方x86 Android模拟器运行含ARM原生库应用的问题

你碰到的INSTALL_FAILED_NO_MATCHING_ABIS错误,核心原因是模拟器的x86 ABI和应用依赖的ARM原生库不兼容——虽然你已经部署了Houdini翻译层,但还差几个关键步骤让系统真正启用这个兼容层。下面是经过验证的解决方案:

1. 确认Houdini文件的完整部署

你能执行houdini --version说明主程序没问题,但得确保所有配套文件都在正确路径并拥有合适权限:

  • 从ARM翻译包ZIP里提取的houdini二进制文件,要放到/system/bin/,并赋予执行权限:chmod 755 /system/bin/houdini
  • libhoudini.so(64位对应libhoudini64.so)要放到/system/lib//system/lib64/对应的目录
  • 翻译包里的arm目录(包含ARM架构的系统库),要完整复制到/system/lib/arm/(64位对应/system/lib64/arm64/

2. 配置系统属性启用Houdini兼容层

启动模拟器后,通过adb shell设置以下系统属性,让Android识别并启用ARM翻译:

# 32位模拟器执行
setprop ro.dalvik.vm.native.bridge houdini
setprop ro.enable.native.bridge.exec 1

# 64位模拟器额外执行
setprop ro.dalvik.vm.native.bridge64 houdini64

设置完成后用getprop ro.dalvik.vm.native.bridge验证,返回houdini即说明配置生效。

3. 强制指定ABI安装应用

直接安装报错的话,试试用adb的--abi参数强制指定ARM ABI安装:

# 先卸载残留应用(如果有的话)
adb uninstall com.your.app.package

# 32位应用用armeabi-v7a,64位用arm64-v8a
adb install --abi armeabi-v7a your_app.apk

4. 检查模拟器的ABI兼容配置

创建模拟器时,确保在「Advanced Settings」里勾选了「Enable ARM translation」选项;如果是已有的模拟器,可以修改其配置文件:
找到模拟器存储目录下的config.ini,添加或修改以下配置:

ro.dalvik.vm.native.bridge=houdini
ro.enable.native.bridge.exec=1
abi.type=x86

保存后重启模拟器,让配置生效。

5. 排查应用本身的ABI限制

有些应用的Manifest里会硬编码只支持ARM ABI,你可以用aapt工具检查:

aapt dump badging your_app.apk | grep abi

如果输出里只有armeabi-v7aarm64-v8a,说明应用限制了ABI。这种情况下,你可以用ApkTool反编译APK,修改AndroidManifest.xml移除<uses-native-library>的ABI限制,再重新打包签名后安装。

完成这些步骤后,你的应用应该就能在官方x86模拟器上正常运行了。需要注意的是,官方模拟器的Houdini翻译性能略逊于Genymotion,但对于小型应用来说完全够用。

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

火山引擎 最新活动