- 积分
- 626
- 最后登录
- 2024-4-21
- 精华
- 0
- 阅读权限
- 40
- 主题
- 71
- UID
- 924712
- 帖子
- 1565
- PB币
- 1826
- 威望
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 717
- UID
- 924712
- 帖子
- 1565
- PB币
- 1826
- 贡献
- 0
- 技术
- 0
- 活跃
- 717
|
本帖最后由 0020 于 2021-12-1 10:02 编辑
前言
因为最近WSA的流行以及受够了安卓模拟器的折磨、以及对某些安卓x86兼容商业版的不满意(广告植入和驱动出奇的落后)、以及不想在自己的一台机器上同时用好几个不同厂家的虚拟机平台,最终打算自己折腾一个安卓虚拟机(随着事态的逐渐发展结果搞了好几个~~)
搞起这几天总的感受就是安卓相关的问题很像linux,就是可能很简单的问题你都很难一下找到答案,在国内网站查到的资料是不同的人互相抄相同且老旧的内容,靠这些资料很多时候并不能解决你自己的问题。而你如果去“对的地方”做大量的筛查,最终总能解决。所以以下教程可能不是最优的,但是基本做到了该做的吧。如果谁对什么步骤有更好的方法有兴趣可以出来讨论讨论
有一些东西需要事先明确:
-因为大部分人的电脑是x86的,其他硬件指令平台的这里并不适用。
-官方安卓x86版是不是真的存在?若回答这个问题,因为安卓是开源的,而谷歌官方支持的x86平台安卓设备确实也存在。所以你问是不是存在我认为肯定也是存在的。但是网上已有的那些即使是标明"Android x86"的镜像都不是谷歌官方发布的,如果我没弄错的话只有Chrome OS是官方的。
主要步骤
1.寻找并下载镜像
网上实际上有不少镜像可选,每个人可根据自己的情况来。比如有“凤凰os"和“Remix os”等,也有号称要接近官方原生的“Android x86”,还有Bliss OS/Lineage OS等;你甚至可以装个Linux再自己搭建兼容环境
我这里为了能尽量接近原版选了Lineage OS 14.1[手动狗头],本来打算选Android x86那个集合的安卓7版,下载后发现并不能光盘引导,以为文件损坏校验了一下hash发现竟然都吻合,于是放弃了。凤凰和Remix的显卡支持太弱,对虚拟机显卡加速缺乏而且BUG太影响使用了所以我只是玩了下也放弃了。
至于为什么最终选择安卓7一代的版本作为实用平台,原因和houdini库有关(详细解释在后面的内容里)。到这里我建议空间不是很紧张的话即使日常使用只有一代但还是应该尽量至少同时保存低至6代高至9代的几个镜像版本(不一定要全安装,只是保留镜像备用而已,原因后面有解释)。8代和9代选一个即可(如果有更高版可以给我介绍下)。而6代前的版本有兴趣可以自己收集,除了好玩和做试验没什么用。
子版本的选择:我建议的是有3d/2d硬件加速需求的应尽量选择下载linux k-4.9内核的版本(注意这里说的不是安卓系统版本),而只有你想模拟使用的所有安卓应用完全没有加速需求的情况下你才可以选k-4.19甚至5.x的内核。网上说4.19的兼容性更强,我测试结果是所谓的兼容性强实际上是因为4.19不支持VMware/VirtualBox的硬件加速,以纯软件方案代替了硬件加速渲染。这个你如果用4.9内核版的话只需要在引导菜单阶段选择no Hardware Acceleration能达到同样的目的,何必为了启动那一下的方便而放弃可能的加速需求呢?5系列内核则根本不支持虚拟机硬件加速,如果对5系内核有需求的倒是可以考虑了(也没其他办法),比如Bliss OS。使用不支持硬件加速的内核版本时还能注意到主机经常高速运转,即使你可能当时并没开什么耗cpu的安卓应用。
2.建立虚拟机
我自用的VMware workstation,所以这里就以VM为例。
这里并不打算像个标准教程那样流水介绍具体步骤了。只是说一下要点:
-不要在选择安装文件那一步选择镜像加载检测,它检测出来的是FreeBSD那个是完全没有硬件加速而且配置老旧。应该自己去后面选择操作系统那步里选Linux 5.x或4.x内核
-虚拟机新建完成后记得去虚拟机设置里勾选启用3D加速选项(其实这个选项个人觉得应该叫图形渲染加速,因为加速有很多情况下无关3D;而且即便对于没有硬件加速支持的Linux内核版本,不选这项也可能会导致虚拟机黑屏)
-可以启动一次虚拟机并以非安装模式启动进安卓界面来测试支持的分辨率,然后将这个分辨率记下来并填入虚拟机的监视器最大分辨率支持中而不是只使用默认的让虚拟机自主决定分辨率。这一步并非没有必要,因为如果没有设置的话虚拟机后续启动不见得再会以现在的分辨率启动,这样会给使用带来麻烦(比如后面内容介绍的模拟触屏软件)。
-网卡:如果使用安卓7以前的版本,因为不支持VirtWifi,应该去虚拟机目录中找到vmx文件并用文本编辑工具打开,将ethernet0.virtualDev = "e1000"之类的改成ethernet0.virtualDev = "vlance",再启动就会发现能上网了(仍然不会有wifi)
3.安装虚拟系统
同样只讲要点。如果以UEFI方式,会发现百度查到的很多不起作用。这里说一下
-安装阶段如果打算将系统分区格式化成ext,分区阶段应该先建立一个100M的分区并设置为引导分区,后面的做系统分区;然后将GRUB安装在这个100M分区上。而如果按百度的教程只分一个区然后将grub装在系统分区上结果很可能是安装好后的系统不自行引导启动。
-“vga=...”这种在启动菜单里设置不会起作用。应该将"set gfxpayload=..."编辑入启动菜单作为单独一行,放在linux那一行之前。这个选项只会在非加速模式下才会起作用。
-关于自设分辨率。vmware中总是强行设置横屏,无法竖屏。查了下只有个240x320是竖屏,但是这种分辨率太小了吧?为了竖屏搞成这分辨率完全没有必要。具体行不行我就没试了。
4.安装完成后的必要处理
-VMware发布至今竟然都没有支持触发式电源按钮的模拟。所以有个任务就是需要让电源按钮变成软件可操作的。对于有任务栏的版本,你只需要设法暴露任务栏(找找就有了,安卓x86里是一个应用);对于没有任务栏的版本(比如Android x86 2~6)你还需要找个模拟按键应用用来模拟电源键才能做到安全关闭系统。
-下载并安装houdini。这个库是用来模拟arm指令的,用来让大部分手机应用能在安卓模拟器上运行。 下载来的一般是一组分别标了系统版本号和xyz的文件夹,每个文件夹里有个houdini.sfs文件
你需要把下载到的houdini.sfs文件按以下名称格式重命名并拷贝到 /system/etc目录下
其中:houdiniN_x是32位系统上模拟32位arm的;houdiniN_y是64位系统上模拟32位arm的;houdiniN_z是64位系统上模拟64位arm的(N应该以具体的系统版本号数字来代替,具体可见后面的内容)。本来对于每代系统这3个都应该同时提供,可是作者在7代安卓之后的版本就只发了y版。所以高版本安卓对v8模拟至今无法完成。
7代之后的64位系统由于z库缺失,手工点击arm兼容选项并不能成功。需要自己去命令行执行enable_nativebridge命令来开启。运行期间会报一些错误,但是回头去设置里就发现能开启了
7代系统能用的houdini库版本号除了7以外还有6.1.1版也能用。直接装7版houdini遇到兼容问题的可以试下换成6.1.1看看。而目前对7代以外的系统版本来说做版本混搭配就不用试了。只能按版本匹配对应
运行命令可以使用自带好了的控制台:
首先你需要运行su提权;然后可能用到这些命令:
cp是拷贝命令、mount驱动器虚拟到文件夹中、umount解除虚拟驱动器(mount后必须执行一下,不然容易数据损坏丢失)、mkdir建立文件夹、cd转到文件夹等。具体用法可以当作linux系统命令查一下。
文件转入安卓的方法:用内置浏览器从网盘转入(小白适用),但是这里我推荐用主机或其他虚拟机adb push进去或用支持ftp的文件浏览器能进行依赖或不依赖外部网络的操作(vmware等自带虚拟内网的功能),也能用虚拟磁盘传文件在安卓内mount进行本地化的操作。
5.必装软件简介
网页浏览器、文件浏览器(需要支持ftp)、Helium备份、触控模拟软件、横屏竖屏强行设置、联网防火墙(用来设置应用联网权限,作为系统权限管理的补充)
[编辑区]
[此处以下为继续考虑添加的内容]
|
|