Android-X86集成houdini(Arm兼容工具)

http://blog.csdn.net/roland_sun/article/details/49735601中看到对于android x86如何支持arm架构app的说明,但没有详细操作步骤,我这里经过摸索实操了一遍。

环境

要注意的是安装android系统时(我参考的https://www.cnblogs.com/wynn0123/p/6288344.html),要在下面这一步一定要选择Yes,否则没有权限对系统进行修改(可能安装后用root remount也行,但我没实验过)。
使用可读写方式安装

安装houdini

由于我没有翻墙,所以一些说翻墙后直接开启选项的方式我不能用,于是就手动处理。

  1. 首先adb pull /system/bin/enable_nativebridge .\enable_nativebridge(x64-6.0-rc3)将arm兼容安装的脚本pull下来。
  2. 打开enable_nativebridge(x64-6.0-rc3),里面有几个下载地址http://goo.gl/Knnmyl、url=http://goo.gl/JsoX2C、http://goo.gl/n6KtQa,用迅雷把他们下载下来(不翻墙也能下,迅雷就这点好)。
  3. 然后放到某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

  4. 然后把enable_nativebridge(x64-6.0-rc3)中的链接换成新的链接,将打印日志的语句log -pe -thoudini都直接改为echo方便后动执行时看效果,再另存为enable_nativebridge.
    修改前后对比

  5. 执行adb push enable_nativebridge /system/bin/enable_nativebridge将文件推送回去。
    执行时出错:

  6. 看来权限不足,先执行adb root,来使用root级别的adb。注意如果是使用虚拟机端口转发的android系统的5555,则这时需要重新adb connect 127.0.0.1:7560 (这里这个ip和端口是配置的本地转发地址)。

  7. 然后再执行adb push enable_nativebridge /system/bin/enable_nativebridge 则成功将文件推入。
  8. 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举例:

环境

安装步骤

在某目录建立bat文件,填入以下内容并执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@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执行时看到结果 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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