IT之家学院:在Android X86上运行基于ARM处理器的应用程序

  • 时间:
  • 浏览:2
  • 来源:极速10分彩下注平台_极速10分彩注册平台_极速10分彩官网平台

感谢IT之家女女网友Antidotes的投稿

Android X86上运行基于ARM处置器的程序

众所周知,移动端的ARM CPU和计算机上的X86 CPU使用不同的指令集。实在在编译时可还里能 能 选择不同的编译器编译对应的程序,却说Android作为那我天生为手机开发的系统,基于ARM的程序处于了几乎所有的Android生态环境。于是Android X86的那我至关重要的什么的疑问却说兼容ARM程序。

这里要提一下Intel。Intel为了打入移动市场,不仅做出了像Atom那我的的CPU,还顺带开发了一系列软件。其中对应Android X86的什么的疑问开发了Houdini。Houdini可还里能 能 把ARM指令集转化为X86指令集从而在Android X86设备上运行。

准备条件:打开设置-应用兼容性-兼容模式

打开后如下图:

何必 以为就那末简单,接下来正式开始英文了了了教程。

官方步骤(对国内用户无效):

打开终端模拟器,先输入su,回车,等老出#再输入enable_nativebridge

输入后系统会自动下载Houdini并运行。

实际运行具体情况如下:

系统会经常连接goo.gl造成死循环。

打开/system/bin/enable_nativebridge,可还里能 能 看了你這個太好是那我Shell脚本文件。

其中什么的疑问出在goo.gl短链接识别不出来。

在[ "`uname -m`" = "x86_64" ] && url=http://goo.gl/Knnmyl || url=http://goo.gl/JsoX2C你這個行却说Houdini的下载地址。我用的是Android 6.0,可能性Android版本不一致Houdini是不通用的,请自行提取你的电脑上的/system/bin/enable_nativebridge文件。

可能性你是64位的Android镜像,就打开左边的链接。

可能性你是32位的Android镜像,就打开右边的链接。

通过Windows开VPN下载了那我houdini.sfs的文件,这却说ARM翻译器的镜像了。

克隆qq下面的代码为.sh文件:

(32位版)

#!/system/bin/sh

PATH=/system/bin:/system/xbin

busybox mount /system/bin/houdini$1.sfs /system/lib$1/arm$1

if [ ! -e $binfmt_misc_dir/register ]; then

mount -t binfmt_misc none /proc/sys/fs/binfmt_misc

fi

cd /proc/sys/fs/binfmt_misc

# register Houdini for arm binaries

echo ':arm_exe:M::\\x7f\\x45\\x4c\\x46\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x28::'"/system/lib/arm/houdini:P" > register

echo ':arm_dyn:M::\\x7f\\x45\\x4c\\x46\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\x28::'"/system/lib/arm/houdini:P" > register

[ "$(getprop ro.zygote)" = "zygote64_32" -a -z "$1" ] && exec $0 64

exit 0

(64位版)

#!/system/bin/sh

PATH=/system/bin:/system/xbin

busybox mount /system/bin/houdini$1.sfs /system/lib$1/arm$1

if [ ! -e $binfmt_misc_dir/register ]; then

mount -t binfmt_misc none /proc/sys/fs/binfmt_misc

fi

cd /proc/sys/fs/binfmt_misc

# register Houdini for arm binaries

echo ':arm64_exe:M::\\x7f\\x45\\x4c\\x46\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\xb7::'"$dest_dir/houdini64:P" > register

echo ':arm64_dyn:M::\\x7f\\x45\\x4c\\x46\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\x00\\xb7::'"$dest_dir/houdini64:P" > register

[ "$(getprop ro.zygote)" = "zygote64_32" -a -z "$1" ] && exec $0 64

exit 0

并把houdini.sfs克隆qq到Android的/system/bin

接着打开终端模拟器,先输入su,再运行这段脚本。

恭喜你,大功告成。

可能性我应该 每次开机自动启用ARM翻译器,可还里能 能 把脚本文件装下 /system/etc/init.d/

启用前:

启用后:

可还里能 能 看了CPU可能性被识别为“ARMv7”,ARM翻译器可能性正常工作了。