如何避免安卓系统虚拟机的缺陷
1. 如何解决android模拟器慢的问题
Android 模拟器一直以运行速度慢着称,可以使用intel HAXM技术为Andorid模拟器加速。使模拟器运行度媲美真机, 彻底解决模拟器运行慢的问题。
1. Intel HAXM 是什么
Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速, 因此需要 CPU 支持 VT , 而且仅限于 Intel CPU, 与 AMD CPU 无缘, Intel HAXM 的描述如下:
使用 Intel VT 技术;
为 Android x86 虚拟设备的模拟运行提供硬件加速;
与 Android SDK 集成;
硬件需求如下:
支持 VT-x, EM64T 以及 Execute Disable Bit 的 Intel 处理器;
至少 1GB 可用内存
支持的操作系统:
Windows 7 (32/64-bit)
Windows Vista (32/64-bit)
Windows XP (32-bit only)
OS X 10.6 or 10.7 (32/64-bit)
2. Intel HAXM 如何使用
下载 HAXM 之后, 需要运行安装程序来进行安装,
3. 下载X86的镜像
如果SDK安装失败,可以单独下载对应API的X86镜像包(该镜像包命名sysimg_armv7a-X_rX.zip, X 为对应版本数字),然后将下载后的镜像包解压到SDK安装目录\system-images\对应的android-X目录下。
4. 新建AVD
如果上面的步骤都没有错误,那么Android模拟器运行的速度几乎就可以和真机媲美了。
2. 为什么Android不可以绕开虚拟机直接运行
安卓是谷歌将它从开源linux上改造而来,依旧保持开源特性。为了应用开发者更多地开发安卓程序,自然也就保留了linux上的虚拟机机制。同时,安卓的目标是手机等移动终端,这些设备的处理器五花百门,而且开源安卓也会被各种深入定制,这同样导致了安卓依然沿用了虚拟机机制来保持高兼容性。当然,这些华为研发了方舟编译器,让系统直接运行机器码,以此来消除虚拟机带来的弊端。
安卓系统最早并不是谷歌研发出来的,而是一家名叫Android的初创公司研发的。这家公司成立22个月后,就把原始Android雏形系统以4千万美元的价格卖给了谷歌。 这个雏形原本就基于linux系统研发而来,自然里面也还是沿用了linux的虚拟机机制。
谷歌拿到系统后,自己继续研发Android系统,在2007年还集合了84家当时一流的硬件厂商组成研发联盟。整个研发依然还是基于linux开源系统,但它解决了商业化的一个大难题。那就是,linux是开源系统,是有GPL开源协议的。很多硬件厂家为了适配该系统,必须将在上面研发的驱动程序公开,一旦公开驱动程序代码就相当于公开了自己的硬件设计。而谷歌研发的Android系统解决了这个问题,它将驱动程序放置到了userspace里面,并让它可以通过l内核访问硬件。同时,公开接口就可以让硬件厂商编写驱动程序。硬件厂商只需要提供驱动程序即可,不需要公开源代码了。
这么多硬件厂商一起研发,自然就会 面临一个问题就是每个厂商的硬件都不同。这对Android生态发展来说是个必须解决的兼容性问题。最好的办法依然是沿用linux的虚拟机机制 ,这样Android的软件作者就无需针对不同硬件重新开发软件。只需要一次开发就可以在安卓系统上的虚拟机中运行。
安卓的虚拟机机制在很大程度上解决了兼容性的问题,但是这种边解释边执行的方式,也降低了软件的运行效率。这些年,华为在这方面的研发上花了大功夫,成功研制出了“方舟”编译器。该编译器就是为了解决这个问题而诞生的。如果软件作者采用方舟编译器重新编译自己的程序。它的软件就可以以机器码的形式在安卓系统上高效运行,并且方舟编译器还会对程序进行优化。按照华为方面的数据显示, 使用华为方舟编译器编译后的程序,操作流畅度提升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是可以不依赖虚拟机运行的,只需要改一下重新编译就好了。
系统就是这么设计的
3. 论述android系统开发平台应有哪些需要改进
在系统运行的稳定性上需要进一步加强,因为这极大的影响到产品的使用价值以及产品的体验感,另外在安卓的内部运行上,这导致速度慢于iOS系统。
论述android系统开发平台需要改进性能问题在系统的分类上,性能优化原则和方法,借助性能优化工具分析解决问题。安卓与IOS系统比起来,我们都知道安卓手机的弊端是在后台偷偷的运行程序,非常占内存也非常耗电,那么,肯定有人会问现在的华为手机有没有这种现象,答案是肯定的有的,因为华为搭载的操作系统也是在安卓系统上面进行修改完善的。
至于苹果手机就没有后台运行的程序,其归根结底还是归根于安卓系统与苹果系统的底层架构不同而导致的。
比如我们的安卓手机在打开很多个应用的时候,我们的程序都是跑在安卓虚拟机钟,每个程序会开一个线程或者是多个线程。
这样一来的话,我们关闭程序的话有可能关不掉其中的线程,所以这些程序都会耗电或者占据内存。
其次定期清理手机,通过手机管家查看偷偷运行的程序,并且停止这些程序,手机定期杀毒以及清理不用的文件等。
比如用华为的手机管家,可以找到手机管家---再找到启动管理----然后再去根据自己的需要进行设置都是可以关闭掉这些后台程序的。
4. 安卓模拟器需要什么样的电脑配置,玩手游的时候很卡,该如何解决
电脑配置:
显卡:940MX,2G独显及以上配置。
核数:四核。
硬盘:一般电脑足够,建议使用固态硬盘(提高运行速度,使游戏更加流畅)。
运行内存:4G及以上(至少需要分配2G给模拟器)。
处理器:i7或者i5八代。
卡顿原因:
1、是模拟器与电脑兼容性问题,就换了很多个模拟器,最后夜神模拟器与我笔记本兼容性好点。
2、电脑硬件性能低,但是玩游戏还是卡,如梦幻西游手游、大话西游手游等。
解决方案:
1、兼容性问题:下载多个模拟器测试与电脑的兼容性,选择兼容性较好的模拟器。
2、卡顿问题:为电脑更换容量较大的内存条。
(4)如何避免安卓系统虚拟机的缺陷扩展阅读
安卓模拟器
1、安卓模拟器是能在电脑上模拟安卓操作系统,并能安装、使用、卸载安卓应用的软件,它能让你在电脑上也能体验操作安卓系统的全过程。
2、安卓模拟器是能在PC平台模拟安卓手机系统的模拟器软件。安卓模拟器能在电脑上模拟出安卓手机运行环境,安卓模拟器让你在电脑上也能体验安卓游戏和应用,在各大下载站都能够下载。
3、比较常用的安卓模拟器有:Android SDK、BlueStacks,可在pc系统和苹果系统运行,着名的vmware虚拟机和Virtual Box虚拟机也可以模拟安卓系统,目前这些模拟器软件均可运行在微软公司的Windows操作系统平台。
(4)如何避免安卓系统虚拟机的缺陷扩展阅读:(网络:安卓模拟器)
5. 如何在安卓机上创建安卓虚拟机在虚拟机里的设置不影响安卓机的设置 比如root
安卓SDK:
首先yaffs2img浏览器打开,\platforms\android-2.3.3_r02-windows\images\system.img
导出build.prop文件,用记事本打开,在ro.config.nocheckin=yes前加#,改好后导入覆盖。
解压附件,su和busybox导入到/system/bin文件夹,右键修改权限为4755。
Superuser.apk导入到/system/app文件夹,右键修改权限4755。保存修改。
其实只要把su和busybox两个文件放到/system/bin即可。
至于Superuser.apk文件,可以从网上下载安装,不一定要放到/system/app下。