1
wbsdty331 2016-02-27 18:41:58 +08:00
我记得 intel x86 手机 好像都有个 arm 解释器
|
2
spance 2016-02-27 18:45:51 +08:00
安卓手机那么便宜, raspberry pi 则更便宜,为什么要费这个劲?
|
3
icedx 2016-02-27 18:51:31 +08:00 via Android
包含安卓模拟器 2.0 的 AndroidStudio 已经出正式版了么
|
4
wuhx OP |
5
crystom 2016-02-27 19:45:14 +08:00 1
我用 arc welder 运行微信, intel 的 chromebook ,能跑微信 5.4 版本,之后的不行
|
6
wuhx OP @crystom 感谢提示,估计后面的版本增强了模拟器环境检测,但我测试了一下 x86 版本的 Xposed 可以正常安装在模拟器上,所以隐藏系统特征比较容易。 何况还有模拟器和整个安卓系统的源码。
|
7
wohenyingyu01 2016-02-27 22:41:45 +08:00
没怎么看懂,不过就我的理解需要用 x86 的 ndk 重新编译一下原生的库即可。具体可以参考 android ndk 文档
|
8
breeswish 2016-02-27 23:09:32 +08:00
Genymotion 直接把 ARM translation 拖进去就可以开始用了..
不过现在瞄了一眼 GM 好像没免费版了,但仍然有其他一大批类似产品 |
9
wuhx OP |
10
wuhx OP 总结一下:
1. ARM 版的 busybox 能用, App 运行失败,必然是安卓相关的一些调用引发的故障。 2. 和 Nexus player 对比差异: Nexus palyer 的内核是 64 位的,但用户态系统是 32 位的 x86 的 AVD 内核用户态都是 32 位, x86_64 的 AVD 内核用户态都是 64 位, 所以很可能是用户态和内核通信时数据结构异常。 所以怀疑问题是安卓的 Binder IPC 通信引起的。 搜集了一些相关资料 Android Binder IPC Fixes https://lwn.net/Articles/555871/ Android: Add support for a 32bit Android file system in a 64bit kernel https://lwn.net/Articles/527989/ [PATCH 2/3] staging: binder: Support concurrent 32 bit and 64 bit processes. http://www.serverphorums.com/read.php?12,881092 走读代码, Binder 如何区分 32 位指针和 64 位指针 http://androidxref.com/kernel_3.10/xref/include/uapi/linux/android/binder.h#42 根据上面的信息 checkout 了模拟器内核代码( goldfish ),并配置内核参数 CONFIG_ANDROID_BINDER_IPC_32BIT=y ,编译了一个内核,然而这个内核并不能起来。 看来是个大坑,没有之前想的那么简单,先记录下来,睡觉~ |
11
woyaojizhu8 2017-02-10 22:23:28 +08:00
请问楼主现在实现了在 x86 安卓模拟器上运行 ARM 原生 App 吗?
|
12
woyaojizhu8 2017-09-02 23:00:20 +08:00
https://groups.google.com/forum/#!topic/android-emulator-dev/LCTh_oxhrCs
这里的帖子也是楼主发的吧。这里已经解答了问题,贴链接过来,希望可以帮到他人 |
13
wuhx OP @woyaojizhu8 多谢,自己都快忘了,没想到 1 年后有人回复。
|
14
woyaojizhu8 2017-09-10 13:53:21 +08:00
@wuhx #13 请问你现在在这个问题上有进展吗?有进展的时候请楼主分享下经验呗。
我一直想在谷歌安卓模拟器上装 libhoudini , 折腾了很久都没成功。 |
15
wuhx OP @woyaojizhu8 后来换了个方案,没继续研究了,有空再看看
|
16
essicaj 2018-01-19 17:21:24 +08:00 1
分享一下,Android 5.1 x86 虚拟机跑 arm 的方案。(下面的属性是从 genymotion 的 build.prop 提取出来的)
# Allow installation of ARM apps ro.product.cpu.abi2=armeabi-v7a ro.product.cpu.abilist=x86,armeabi-v7a,armeabi ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi # Enable native bridge for ARM apps ro.dalvik.vm.isa.arm=x86 ro.dalvik.vm.native.bridge=libhoudini.so # Enable execution of ARM executables ro.enable.native.bridge.exec=1 添加进虚拟机的文件是来自于 Genymotion_ARM_Translation_5.1_Lollipop.zip 我是直接编译源码的,拷贝文件可以用 PRODUCT_COPY_FILES、属性可以用 PRODUCT_PROPERTY_OVERRIDES |
17
yaorc 2018-08-22 16:29:13 +08:00 1
@essicaj 请问两个问题:
1.ARM_Translation.zip 怎么添加到 AVD 里面呢?是 pull 到 sd 卡再用 flash-archive.sh 安装吗? 2.AVD 的 system.img 文件怎么修改呢?我是 Window 10 平台 |