Android X86上运行基于ARM">ARM处理器的应用程序

Android CPU架构之ARM和X86 中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。——百度百科将晶体管作为开关,将一个开关的输出端与另一个的输入端相连,就能构成各种逻辑电路和功能块,这些功能块采用的形式包括加法器、锁存器、触发器、寄存器、计数器等等,我们可以使用这些功能块构建自定义执行单元来执行特定计算。归根结底,CPU就是构建多个专用处理元件,并用多种方式将它们连接起来,从而实现复杂的计算的芯片。 阅读详情
AI摘要

本文介绍如何在AndroidX86上运行基于ARM处理器的应用程序,通过使用Houdini工具进行ARM指令集到X86指令集的转换,解决不同架构间的兼容问题。

Android X86上运行基于ARM">ARM处理器的应用程序

众所周知,移动端的ARM CPU和计算机上的X86 CPU使用不同的指令集。虽然在编译时可以选择不同的编译器编译对应的程序,但是Android作为一个天生为手机开发的系统,基于ARM的程序占据了几乎所有的Android生态环境。于是Android X86的一个至关重要的问题就是兼容ARM应用程序。

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

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

打开后如下图:
在这里插入图片描述

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

不要以为就这么简单,接下来正式开始教程。

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

打开终端模拟器,先输入su,回车,等出现#再输入enable_nativebridge
输入后系统会自动下载Houdini并运行。

实际运行情况如下:
在这里插入图片描述

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

系统会一直连接goo.gl造成死循环。

打开/system/bin/enable_nativebridge,可以看到这其实是一个Shell脚本文件。
在这里插入图片描述

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

其中问题出在goo.gl短链接识别不出来。

在[ “uname -m” = “x86_64” ] && url=https://goo.gl/Knnmyl || url=https://goo.gl/JsoX2C这一行就是Houdini的下载地址。我用的是Android 6.0,如果Android版本不一致Houdini是不通用的,请自行提取你的电脑上的/system/bin/enable_nativebridge文件。

如果你是64位的Android镜像,就打开左边的链接。

如果你是32位的Android镜像,就打开右边的链接。

通过Windows开VPN下载了一个houdini.sfs的文件,这就是ARM翻译器的镜像了。

复制下面的代码为.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复制到Android的/system/bin

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

恭喜你,大功告成。

如果想要每次开机自动启用ARM翻译器,可以把脚本文件放到/system/etc/init.d/
启用前:
在这里插入图片描述
  IT之家学院:在Android X86上运行基于ARM处理器的应用程序3

启用后:
在这里插入图片描述
  IT之家学院:在Android X86上运行基于ARM处理器的应用程序4

可以看到CPU已经被识别为“ARMv7”,ARM翻译器已经正常工作了。

转载:https://www.stmcu.org.cn/article/id-329167

SpringBoot系列之实现一个AI聊天助手 本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。 阅读详情

相关推荐

激光雷达+相机标定避坑指南:手把手教你用KITTI数据完成坐标转换

本文详细介绍了激光雷达与相机标定的实战指南,利用KITTI数据集完成精准坐标转换。从数据准备、工具链搭建到标定矩阵加载与验证,再到坐标转换流水线的工程实现,提供了全面的避坑技巧和工程实践建议。特别强调了多传感器融合中的常见问题及解决方案,帮助开发者提升自动驾驶和机器人感知系统的环境感知精度。

book8的博客 835

VMware安装Android-x86_64-9.0-r2系统兼容arm设置

VMware虚拟机Android-x86_64-9.0-r2系统兼容arm设置

cubesir的专栏 8122

第3章 zynq MII转GMII的配置和EMIO UART0的配置

本文介绍了在Vivado工程中实现MII转GMII接口适配的过程,同时配置EMIO UART0接口。主要内容包括:修改PS IP核添加UART0接口,使用concat IP核进行信号整合,调整GMII信号引脚连接,添加约束文件定义引脚映射,并最终生成bit流文件。通过详细的操作截图和TCL约束代码,展示了从硬件配置到生成可编程文件的完整流程,为Zynq平台开发提供了实用参考。

qq_36517072的博客 903

Android X86 解决ARM兼容的问题

在Parallels Desktop上安装了64位的Android x86_64,但是很多App只支持arm64,不支持Intel的x86,下面是解决办法。

刘博平 9540

i茅台APP加密参数逆向分析:MT-Device-ID与mt-v生成算法

在移动应用安全领域,参数加密是防止API滥用的重要手段。通过对通信协议的逆向分析,可以揭示加密参数的生成原理,这对理解移动应用安全机制具有重要意义。以i茅台APP为例,其关键接口使用了MT-Device-ID和mt-v两个加密参数,前者基于设备硬件信息生成,后者则通过动态签名机制确保请求时效性。这类技术广泛应用于电商、金融等需要高安全性的场景。通过抓包工具和逆向工程手段,可以还原出从设备指纹生成到动态签名的完整技术链条,其中涉及MD5、SHA256等常见哈希算法的应用。掌握这些加密参数的生成逻辑,不仅有助于

weixin_28568819的博客 320

stm32h743的hrtim使用生成pwm波

HRTIM(High-Resolution Timer)是一种高精度定时器,其时钟频率可直接与CPU主频同步,达到480MHz。相比之下,其他传统定时器需挂载在APB总线上,受总线频率限制,最高仅支持240MHz。这种直接时钟同步机制显著提升了定时器的分辨率和精度。

d13211322的博客 1612

android x86 手动安装arm兼容库

原文链接https://www.jianshu.com/p/73198c3bfbb1 对于部分原文中内容的进一步解释 1.enable_nativebridge是一个脚本文件,在/system/bin/enable_nativebridge路径下 2.并不一定需要使用pull,打开模拟终端,输入su root获取root 权限 3.并不一定需要修改enable_nativebridge,从网上下载...

qq_26227841的博客 3万+

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2687

[原创]Android x86开启houdini(arm兼容库) 手动安装houdini 支持arm app

[亲测可用]Android x86开启houdini(arm兼容库) ,手动安装houdini 支持arm app

INT15的博客 1万+

MPU6050芯片 寄存器详解与配置指南(详解)

分频值越小,数据刷新越快(如分频值 = 0 时,刷新率 = 8kHz/1=8kHz)。功能:配置采样频率分频系数,控制 ADC 转换速度和数据刷新率。数据刷新率 = 陀螺仪输出时钟频率 /(1 + 分频值)

m0_74696257的博客 1421

Avalonia+ReactiveUI跨平台路由:从零到舞者,你的UI也能跨界起舞?

至此,你已掌握了Avalonia+ReactiveUI的跨平台路由精髓!你的应用现在能够优雅地在各个界面间穿梭,就像是在不同星球间跳跃的宇宙飞船。无论是初探跨平台开发的新手,还是经验丰富的老船长,这段旅程都能让你的UI编排技能更上一层楼。现在,是时候让世界见证你的跨平台魔术了!💫记住,每一次实践都是向着完美编舞迈进的一步,勇敢地在你的项目中尝试吧!如果在航行中遇到风暴,别忘了回来看看这篇指南,或者在评论区抛出你的救生圈,我们一起解决!🌊。

java专栏 1534

用Docker跑Android系统,在x86电脑玩ARM手机游戏

ReDroid (Remote anDroid) 是自架「云手机」的方案,透过docker在电脑上跑Android系统容器,再利用Scrcpy的镜射萤幕功能连线到Android桌面。目前来看,ReDroid的泛用性比Waydroid好,因为不只造福Linux使用者,连那些想摆脱专有模拟器、想自架云手机的用户都可以利用ReDroid达成目的。目前即使有安装libndk,Android 11的Play商店还是不给下载ARM架构的APP,请配合APKPure之类的应用程式商店安装APP。ReDroid容器的。

blockish的专栏 2万+

大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)

大疆芯片开发岗A卷 一、单选题 1.下列关于多bit数据跨时钟域的处理思路,错误的有   A、发送方给出数据,接收方用本地时钟同步两拍再使用   B、发送方把数据写到异步fifo,接收方从异步fifo里读出   C、对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制   D、发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据 2.对12.918做无损定点化,需要的最小位宽是多少位,位宽选择11位时的量化误差是多少   A、12位,0.0118   B、13位,0.0039

Mr.翟的博客 2万+

让x86的android模拟器能模拟arm架构系统

2016-06-24 15:51:49   来源:eefocus    关键字:x86  android模拟器能  arm架构系统 网上介绍共计三种模拟器比较常用,分别是bluestacks、andy和Genymotion,前者支持ARM架构,中者支持远程控制,后者启动速度快,各有优缺点。 如果要用genymotion模拟arm的话,还是放弃吧,直接用bluestacks。   ho

Jingle的专栏 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

x86 平台运行 arm 的方法

最简单的x86平台(只支持x86_64)运行异构平台 docker 的办法

u010346142的博客 2864

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

使用QEMU(x86)模拟运行ARM64架构并进行内核调试

详细描述了如何从头构建一个QEMU(x86)+ARM64平台环境,并进行内核调试过程。

Jia ming 的日常学习笔记 6635

android x86 arm兼容库,android x86 手动安装arm兼容库

原文链接https://www.jianshu.com/p/73198c3bfbb1对于部分原文中内容的进一步解释1.enable_nativebridge是一个脚本文件,在/system/bin/enable_nativebridge路径下2.并不一定需要使用pull,打开模拟终端,输入su root获取root 权限3.并不一定需要修改enable_nativebridge,从网上下载了一个h...

weixin_42299257的博客 7205

Android x86的arm兼容库移植--初步分析及尝试手动移植houdini/ndk_translation

本文章对手动移植x86平台Android的arm兼容库提供一些思路,以及一些解释。

Rrex_的博客 5418

android x86兼容模式,英特尔解释安卓与x86兼容问题

该楼层疑似违规已被系统折叠隐藏此楼查看此楼前几日拿到联想 K900,这款机器无论是硬件还是软件都十分不错,工业设计也很强。但很多网友在询问我时仍然关心一个问题,x86 的应用兼容性怎么样?在他们看来,兼容性很大程度上影响他们是否购买这款机器。事实证明,经过我的测试,x86 的应用兼容性已经做的十分完善,英特尔此前宣布可达 95% 的兼容性不假,大家大可放下心里包袱。不过英特尔是如何做到的,这背后...

weixin_33750004的博客 4011

Android studio模拟器架构选择arm还是x86 解决报错MissingLibraryException

首先,如果你的APP可以正常安装包括第三方或者自己编译的,那么就用x86,因为这个架构的虚拟机很快;如果像我一样,编译出的apk中的so都是ARM的,那么就需要ARM架构的虚拟机,否则就会报下面的错误。x86兼容性不够 , 很多app装不上 或者装上了不能玩。市面上的模拟器大多是x86的,因此如果安装不上的话,可以考虑是否是不支持x86架构的原因。用的谷歌官方的模拟器, intel x86 系统镜...

王温暖的博客 2万+

在windows内使用virtualbox搭建安卓x86--以及所遇到的问题解决--3

(3).进入adb -s 127.0.0.1:5555 shell,进入shell模式,cd 到system/etc,ls列出所有文件和文件夹,发现houdini_y.sfs就在文件夹中,此时即可执行cd ./到根目录,然后执行enable_nativebridge,若出现。,此应用是在安卓内建立server(scrcpy-server.jar),windows作为client给android内的包传递信息传递,实现点击转触摸的效果。Developed by 福州机电工程职业技术学校 wh。

温辉的博客 3034

X86 Android与ARM Android在应用上的兼容

供稿:阿普奇科技股份有限公司 2015/6/17 11:47:14 星级: 人气:1036 关键词: X86 Android ARM 摘要:Android本是Google联合开放手机联盟针对移动设备开发的一种其于Linux的开源代码操作系统。发行至今,在全球的市场份额跃居首位。在2011年,近几年致力移动端的Intel也宣布在其移动系列ATOM上支持Andro

Jingle的专栏 1万+

android 模拟器运行arm镜像

按照提交注释是说apilevel > 28,就是新的android 9.0及以后版本上不在支持host和guest (android)不匹配的情况,说白了就是x86上只能跑x86版本的android,arm机器上只能跑arm版本的android镜像。具体为什么也没有说,但是我想说这个限制完全和qemu设计的初衷不匹配了,qemu本就是支持在一个实体cpu上模拟出不同架构的cpu,对于需要针对cpu相关的调试可能就没办法用模拟器验证调试了。win10上安装了最新的android studio。

fightingup 8709

搭建Android x86_64及arm64-v8a操作步骤

现在android的设备使用64位的cpu已经开始普遍了,所以有必要针对64位的cpu在ndk编译上做一些支持。 下面这篇文章转载自: http://blog.youkuaiyun.com/fengbingchun/article/details/44491763 1.        从https://developer.android.com/tools/sdk/ndk/index.h

格物致知的专栏 [音视频编解码 网络协议 计算机视觉 计算机图形学 图像理解 语音识别 机器学习 模拟电路 传感器] 3万+

Andriod 9.0 x86 双系统安装 ARM兼容 台式机网络

单系统安装没什么问题,iPlaysoft博客有讲怎么安装。我这里提一下双系统安装。 操作经历 已有Windows10系统安装在C盘,硬盘为sata接口的SSD,硬件较为老旧,不支持UEFI启动。先用Diskgenius分出一个分区,不格式化。从U盘启动安装,在选择完分区,安装过程中报错,显示grub同步磁盘信息的时候错误,回到分区选择界面,手动编辑分区,结果又报错(“Fatal Error: Ba...

bailei7287的博客 1万+

Android x86 下运行纯ARM版APP

Android x86 默认不带houdini,运行纯ARM版会提示:很抱歉,”xxxx”已停止运行设置->应用兼容性->打开终端模拟器$ su # enable_nativebridge脚本会自动下载houdini.tgz并解压到相应位置32bit:http://goo.gl/PA2qZ7 64bit:http://goo.gl/Xl1str

zrools的博客 2万+

Android x86 可用ARM编译器

ARM编译器 ARM-Translation for Android x86 下载解压后复制所有文件(96个)到/system/lib/arm; 文件权限为(664): -rw-rw-r- 所有者为: 1000 system 1000 system 这里提供的ARM编译器测试可用于Android-x86 4.4 R1和R2(只限于64位CPU)。An

曹浩洋的专栏 4375
上一篇: android源码编译system.img文件重打包
下一篇: 解读Nativebridge对于houdin的支持
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值