如何在linux ubuntu中使用android手机程序

如何在linux ubuntu中使用android手机程序,第1张

安装android虚拟机

可以安装android的apk,搭建android的开发环境,便可游埋以运神丛蚂行虚拟android手机并安装app。但运郑慎行反映速度会比较慢。

也可以使用virtualbox安装android的x86版,运行流畅。但手机程序是arm版的,会存在兼容问题,不是所有app都能正常在x86版上运行。

Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情。

方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的。

谷歌在很早之前提出了archon的方案,能够直接在PC端运行安卓app,但是并不是很完善,所以不保证所有app可运行,请自测。

后来deepin对其进行了加强,在此感谢深度团队。

部分为转载内容,再次感谢原作者。

理论基于Debian的系统都可以,本人基于Linux mint17.3,其他Linux发行版请自行测试。

一、搭乎安装运行环境

首先要安装chrome浏览器,可到 http://www.google.cn/chrome/browser/desktop/index.html 下载

在我提供的资源网址中,选择环境包文件夹

安装 archon-integration*.deb 和 deepin-archon*.deb即可

二、安装安卓app

1.安装打包好的安卓app的deb包

直接在我提供的资源网址中,选择Android-apps文件夹下的早枝备对应安卓app的安装包即可

也可以到网址: http://packages.deepin.com/deepin/pool/non-free/a/ 下载对应的安卓app安装包

2.直接运行apk

a.下载测试的安卓apk程序,请尽量下载Pad版本;

b.解压apk程序,终端执行:

/usr/lib/node_modules/chromeos-apk/chromeos-apk --archon -t --scale --name "Android App" xxx.apk ##xxx.apk为被解压的apk文件名

c.测试运行,终端执行:

/lastore/framework/myarchon/archonrun --silent-launch --load-and-launch-app=被解压apk程序的完陆毁整路径

如果想一部到位,仅仅是测试的,也可以下载环境包中的Android.sh.zip 解压出 Android.sh

运行

android.sh xx.apk

即可看到软件运行情况。

安卓是谷歌将它从开源linux上改造而来,依旧保持开源特性。为了应用开发者更多地开发安卓程序,自然也就保留了linux上的虚拟机机制。同时,安卓的目标是手机等移动终端,这些设备的处理器五花百门,而且开源安卓也会被各种深入定制,这同样肆源嫌导致了安卓依然沿用了虚拟机机制来保持高兼容性。当然,这些华为研裂拍发了方舟编译器,让系统直接运行机器码,以此来消除虚拟机带来的弊端。

1、安卓的诞生过程决定了它会沿用linux的虚拟机

安卓系统最早并不是谷歌研发出来的,而是一家名叫Android的初创公司研发的。这家公司成立22个月后,就把原始Android雏形系统以4千万美元的价格卖给了谷歌。 这个雏形原本就基于linux系统研发而来,自然里面也还是沿用了linux的虚拟机机制。

2、移动终端硬件厂商太多,也只能沿用虚拟机方式

谷歌拿到系统后,自己继续研发Android系统,在2007年还集合了84家当时一流的硬件厂商组成研发联盟。整个研发依然还是基于linux开源系统,但它解决了商业化的一个大难题。那就是,linux是开源系统,是有GPL开源协议的。很多硬件厂家为了适配该系统,必须将在上面研发的驱动程序公开,一旦公开驱动程序代码就相当于公开了自己的硬件设计。而谷歌研发的Android系统解决了这个问题,它将驱动程序放置到了userspace里面,并让它可以通过l内核访问硬件。同时,公开接口就可以让硬件厂商编写驱动程序。硬件厂商只需要提供驱动程序即可,不需要公开源代码了。

这么多硬件厂商一起研发,自然就会 面临一个问题就是每个厂商的硬件都不同。这对Android生态发展来说是个必须解决的兼容性问题。最好的办法依然是沿用linux的虚拟机机制 ,这样Android的软件作者就无需针对不同硬件重新开发软件。只需要一次开发就可以在安卓系统上的虚拟机中运行。

3、华为的方舟编译器

安卓的虚拟机机制在很大程度上解决了兼容性的问题,但是这种边解释边执行的方式,也降低了软件的运行效率。这些年,华为在这方面的研发上花了大功夫,成功研制出了“方舟”编译器。该编译器就是为了解决这个问题而诞生的。如果软件作者采用方舟编译器重新编译自己的程序。它的软件就可以以机器码的形式在安卓系统上高效运行,并且方舟编译器还会对程序进行优化。按照华为方面的数据显示, 使用华为方舟编译器编译后的程序, *** 作流畅度提升24%,系统响应速度提升44%,第裂手三方应用 *** 作流畅度提升60%!

总结

Android没有绕开虚拟机直接运行,是因为从它研发之初为了保持高兼容性,不得不沿用了虚拟机的机制。但在这些年,华为研发了“方舟”编译器,就是为了解决这个问题。通过方舟编译器编译后的程序可以直接以机器码的形式在安卓系统上运行,效率大大提高。

为了多点儿面试题[机智]

当初设计android的时候,设计人员只是软件工程师,无法针对某个CPU(目前有的CPU框架intel,arm,mips,rsicv等)去开发。最好的是,我针对所有CPU都支持。

跨平台,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

因为机器针对不同机器语言,有不同执行逻辑。

就好比二进制000100,在arm里面是调用加法器,而riscv是调用乘法器一样。所以,需要给这些不同平台请个翻译。而虚拟机就是起到翻译作用。

这样虽然增加了消耗(例如执行同样代码,时间消耗上,c明显由于java),但是可以某种意义上,把软件,物理硬件分开了。软件重点设计自己app,而硬件不断增加CPU性能。

因为上层应用是 建立在 java 库的基础上,运行 java 库 需要 java 虚拟机,调试模式,可以登录到系统里,直接运行linux 命令,也可以下载运行 c程序。

啥叫Android不可以绕开虚拟机直接运行?Android本质上是Linux的变种,它本身就是应用APP的虚拟机容器,Android源码针对硬件平台编译之后,就是直接在CPU上运行的机器码了,它的运行并不依赖于其他的虚拟机。

APP是JAVA打包的,倒是需要在Android的JVM里运行,毕竟要考虑跨平台嘛。

ActivityThread.java就是一个应用程序,有main方法,是一个进程,就是靠虚拟机,没有这个就没有app。咋绕开,绕开就得不用这个,得从内部更换成别的,都更换了那就不是简单的事情了

因为java代码必须编译成机器语言才行,这时候就要接助虚拟机

在问为什么前,先问下是什么?Android是可以不依赖虚拟机运行的,只需要改一下重新编译就好了。

系统就是这么设计的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12421102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存