Android-X86集成houdini(Arm兼容工具)
在http://blog.csdn.net/roland_sun/article/details/49735601中看到对于android x86如何支持arm架构app的说明,但没有详细操作步骤,我这里经过摸索实操了一遍。
环境
- Win10 64 Home版
- VirtualBox 5.1
- android-x86_64-6.0-r3.iso(下载于:https://www.fosshub.com/Android-x86.html/android-x86_64-6.0-r3.iso)
要注意的是安装android系统时(我参考的https://www.cnblogs.com/wynn0123/p/6288344.html),要在下面这一步一定要选择Yes,否则没有权限对系统进行修改(可能安装后用root remount也行,但我没实验过)。
安装houdini
由于我没有翻墙,所以一些说翻墙后直接开启选项的方式我不能用,于是就手动处理。
- 首先
adb pull /system/bin/enable_nativebridge .\enable_nativebridge(x64-6.0-rc3)
将arm兼容安装的脚本pull下来。 - 打开
enable_nativebridge(x64-6.0-rc3)
,里面有几个下载地址http://goo.gl/Knnmyl、url=http://goo.gl/JsoX2C、http://goo.gl/n6KtQa
,用迅雷把他们下载下来(不翻墙也能下,迅雷就这点好)。 - 然后放到某http服务器,我是放到我自己本地架设的http服务器中。
http://192.168.0.101/houdini_Knnmyl/houdini.sfs
http://192.168.0.101/houdini_JsoX2C/houdini.sfs
http://192.168.0.101/houdini_n6KtQa/houdini.sfs
-
然后把
修改前后对比enable_nativebridge(x64-6.0-rc3)
中的链接换成新的链接,将打印日志的语句log -pe -thoudini
都直接改为echo
方便后动执行时看效果,再另存为enable_nativebridge
.
-
执行
adb push enable_nativebridge /system/bin/enable_nativebridge
将文件推送回去。
执行时出错:
-
看来权限不足,先执行adb root,来使用root级别的adb。注意如果是使用虚拟机端口转发的android系统的5555,则这时需要重新adb connect 127.0.0.1:7560 (这里这个ip和端口是配置的本地转发地址)。
-
然后再执行
adb push enable_nativebridge /system/bin/enable_nativebridge
则成功将文件推入。 -
adb shell后,执行
/system/lib/enable_nativebridge
,执行结果最后一行显示的是houdini64 enabled。
安装一个我的世界游戏试试,果然行了。
20171201:更新
android-x86-7.1-rc2
在继续研究的过程中对于各版本的android-x86都进行了测试,其中4.4及5.1的都能正常安装houdini,但是启动游戏时都有各种问题导致崩溃。6.0及7.0的x86和x64版本均正常。
在各种尝试时,写了个快速脚本来处理安装houdini。这里拿安装android-x86-7.1-rc2的houdini举例:
环境
- 未FQ的Win10 64 Home版
- VirtualBox 5.1
- android-x86-7.1-rc2.iso(下载于:http://bdownload.fosshub.com/programs/android-x86-7.1-rc2.iso)
-
安装android-x86-7.1-rc2时设置了adb端口转发为127.0.0.1:8671
image.png
安装步骤
在某目录建立bat文件,填入以下内容并执行
@rem 注意下面的地址和端口是虚拟机的地址和端口
@set address=127.0.0.1:8671
@adb connect %address%
@adb -s %address% pull /system/bin/enable_nativebridge enable_nativebridge_raw
@copy enable_nativebridge_raw enable_nativebridge
@echo 请修改enable_nativebridge后按任意键将文件写回
@pause
@echo 以root权限重新连接,并写回enable_nativebridge文件
adb -s %address% root
adb connect %address%
adb -s %address% push .\enable_nativebridge /system/bin/enable_nativebridge
@echo 任意键开始执行enable_nativebridge
@pause
在提示“请修改enable_nativebridge后按任意键将文件写回”时,用文本编辑工具打开pull回来的enable_nativebridge
文件,并且将里面的goo.gl
的链接(用短链接还原网站http://bitly.co/,已FQ可跳过)解析出来并且改成真实链接如下,最好顺便把所有的log -pe -thoudini
和log -pi -thoudini
改成echo
方便后面shell执行时看到结果 :
f [ -z "$1" ]; then
if [ "`uname -m`" = "x86_64" ]; then
v=7_y
# http://goo.gl/SBU3is -> http://dl.android-x86.org/houdini.php?v=7_y
url=http://mirror.ddscentral.org/dl.android-x86.org/houdini/7_y/houdini.sfs
else
v=7_x
# http://goo.gl/0IJs40 => http://dl.android-x86.org/houdini.php?v=7_x
url=http://zebra-mirror.ddscentral.org/dl.android-x86.org/houdini/7_x/houdini.sfs
fi
else
v=7_z
# http://goo.gl/FDrxVN -> http://dl.android-x86.org/houdini.php?v=7_z
url=http://mirror.ddscentral.org/dl.android-x86.org/houdini/7_z/houdini.sfs
fi
然后回到批处理按任意键写回,再按任意键执行enable_nativebridge。
然后去android里把应用兼容性里的支持arm打开。
image.png