20
20
21
21
![ android-x86-demo.gif] ( https://img.linkzz.eu.org/main/images/2023/11/c8a6924e9c9fa1972a6f19da3367218c.gif )
22
22
23
- 可以看到运行很流畅,由于gif压缩小了尺寸,Aida64的信息界面看不清,显卡
24
- 是` virtGL ` ,支持` OpenGL ` ,3D加速由宿主机` Intel UHD 630 ` 提供,最后的游戏演示可看
25
- 出很流程。
23
+ 可以看到运行很流畅,由于gif压缩小了尺寸,Aida64的信息界面看不清,显卡是` virtGL ` ,支持` OpenGL ` ,3D加速由宿主机` Intel UHD 630 ` 提供,最后的游戏演示可看出很流程。
26
24
27
25
## 1. 前言
28
26
29
27
### 1.1 为什么需要Android
30
28
31
- 我日常使用的是一个直通了RTX2060s(矿卡)的Win11虚拟机,众所周知,在虚拟机里使用
32
- 模拟器性能巨差,我试过夜神模拟器,启动慢不说,游戏电竞帧数,连抖音都卡顿明显。所
33
- 以一个能在Hypevision中运行的安卓系统就是一个很好的选择。
29
+ 我日常使用的是一个直通了RTX2060s(矿卡)的Win11虚拟机,众所周知,在虚拟机里使用模拟器性能巨差,我试过夜神模拟器,启动慢不说,游戏电竞帧数,连抖音都卡顿明显。所以一个能在Hypevision中运行的安卓系统就是一个很好的选择。
34
30
35
31
### 1.2 选择哪一种
36
32
37
33
现阶段能作为选择的有3种方案:
38
34
39
35
- 1 . ** ChromeOS** :
40
36
41
- 首当其冲的就是基于[ Chromium OS] ( https://www.chromium.org/chromium-os/ ) 的
42
- ChromeOS及其他发行版如国内的[ FydeOS] ( https://fydeos.io/ ) ,这系统号称老电影
43
- 福音,具有完整的桌面环境并兼容Android应用,可惜对于显卡的兼容性不是很好,而
44
- 虚拟机能使用3D加速的显卡,除了显卡直通外还有一种就是最近一两年积极维护
45
- 的[ VirtualGL] ( https://wiki.archlinux.org/title/VirtualGL ) ,所以ChromeOS在
46
- VirtualGL下运行是否可行还得画个问号,后面再折腾。
37
+ 首当其冲的就是基于[ Chromium OS] ( https://www.chromium.org/chromium-os/ ) 的ChromeOS及其他发行版如国内的[ FydeOS] ( https://fydeos.io/ ) ,这系统号称老电影福音,具有完整的桌面环境并兼容Android应用,可惜对于显卡的兼容性不是很好,而虚拟机能使用3D加速的显卡,除了显卡直通外还有一种就是最近一两年积极维护的[ VirtualGL] ( https://wiki.archlinux.org/title/VirtualGL ) ,所以ChromeOS在VirtualGL下运行是否可行还得画个问号,后面再折腾。
47
38
48
39
- 2 . ** 容器化方案 -` Waydroid ` or ` Redroid ` ** :
49
40
50
- 第二种方案就是借助容器化` cgroups ` ,` namespace ` 等内核技术的容器化方案,这种
51
- 方案启动快速,可使用宿主机硬件资源,也能使用宿主机GPU进行3D加速, 但是对于
52
- Nvidia的显卡兼容性很差。运用pve创建一个lxc容器来运行docker redroid容器也能
53
- 运行,后续折腾一下这个方案。
41
+ 第二种方案就是借助容器化` cgroups ` ,` namespace ` 等内核技术的容器化方案,这种方案启动快速,可使用宿主机硬件资源,也能使用宿主机GPU进行3D加速, 但是对于Nvidia的显卡兼容性很差。运用pve创建一个lxc容器来运行docker redroid容器也能运行,后续折腾一下这个方案。
54
42
55
43
- 3 . ** Android-x86:**
56
44
57
- [ Android-x86] ( https://www.android-x86.org/ ) 在AOSP的基础上增加x86平台的支
58
- 持,可通过native-bridge转义arm指令从而运行arm应用,同样称为老电脑福音,GPU
59
- 兼容性较好,兼容[ VirtualGL] ( https://wiki.archlinux.org/title/VirtualGL ) ,
60
- 今天我们就来在pve中尝试一下这个系统有什么妙处。
45
+ [ Android-x86] ( https://www.android-x86.org/ ) 在AOSP的基础上增加x86平台的支持,可通过native-bridge转义arm指令从而运行arm应用,同样称为老电脑福音,GPU兼容性较好,兼容[ VirtualGL] ( https://wiki.archlinux.org/title/VirtualGL ) ,今天我们就来在pve中尝试一下这个系统有什么妙处。
61
46
62
47
## 2. 安装Android-x86
63
48
64
49
### 2.1 镜像下载
65
50
66
- 打开[ Android-x86] ( https://www.android-x86.org/ ) 官网,官网提供了2个下载分流,按
67
- 需选择,我这里选
68
- 择[ SourceForge] ( https://sourceforge.net/projects/android-x86/files/ )
51
+ 打开[ Android-x86] ( https://www.android-x86.org/ ) 官网,官网提供了2个下载分流,按需选择,我这里选择[ SourceForge] ( https://sourceforge.net/projects/android-x86/files/ )
69
52
70
53
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/5d0d0aa1d930d4aba35b64d7cb377d8e.png )
71
54
72
55
共有一下版本:
73
56
74
57
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/7eb5ee18842f0715ae49fe07e057502f.png )
75
58
76
- 最新版本Release 9.0 基于Android 9.0 Pie,也是下载次数最多的版本,我们选择此版
77
- 本。
59
+ 最新版本Release 9.0 基于Android 9.0 Pie,也是下载次数最多的版本,我们选择此版本。
78
60
79
61
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/68eaaa00161a22fc93115275dfa22175.png )
80
62
92
74
93
75
选择 ` q35 ` 机型和 ` OVMF ` 安装,显卡选择` VirGL GPU `
94
76
95
- > ` VirGL GPU ` 需要宿主机有有效的render节点设备,也就是说你的显卡需要正确的驱动了
96
- > 才能运行,通过` ls /dev/dri ` 查看是否有 ` render* ` 字样。
77
+ > ` VirGL GPU ` 需要宿主机有有效的render节点设备,也就是说你的显卡需要正确的驱动了才能运行,通过` ls /dev/dri ` 查看是否有 ` render* ` 字样。
97
78
98
79
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/ad8920561f6fc190fe3bddb0495dc2c9.png )
99
80
100
81
存储给到32G即可,如果需要安装大型游戏可以给多一点。
101
82
102
83
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/25c2e923bae364d53066cc0a2f5421c9.png )
103
84
104
- 安卓比较依赖` CPU ` 资源,如果运行的是` arm ` 应用更需要` CPU ` 的转译,所以这里给到
105
- ` 10 vCPU ` 。
85
+ 安卓比较依赖` CPU ` 资源,如果运行的是` arm ` 应用更需要` CPU ` 的转译,所以这里给到 ` 10 vCPU ` 。
106
86
107
87
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/50cae9a59aec34c61356736995d4d9fd.png )
108
88
@@ -192,10 +172,8 @@ Wifi网络先跳过
192
172
选择默认主屏幕模式:
193
173
194
174
- 任务栏 - 基于浮窗的任务栏模式,类似桌面模式,但是使用体验很差。
195
- - Quickstep - 传统安卓桌面,鼠标模拟点击操作,还有抽屉式应用,用过安卓的会比较熟
196
- 悉这个模式,按需选择。
197
- > 这里选了始终之后如果要切换默认模式在设置 -> 应用和通知 -> 默认应用里面改回来
198
- > 即可
175
+ - Quickstep - 传统安卓桌面,鼠标模拟点击操作,还有抽屉式应用,用过安卓的会比较熟悉这个模式,按需选择。
176
+ > 这里选了始终之后如果要切换默认模式在设置 -> 应用和通知 -> 默认应用里面改回来即可
199
177
200
178
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/2f1d74da66a65b2a38f184fbc5c298f9.png )
201
179
@@ -205,9 +183,7 @@ Wifi网络先跳过
205
183
206
184
### 3.2 设置静态ip
207
185
208
- 设置 -> 网络和互联网 -> WLAN 点击 ` VirtWifi ` 连接,安卓会通过DHCP获取ip,一般获
209
- 得的ip会显示无法访问互联网,这是因为我们的网络无法访问谷歌404网站,接下来我们修
210
- 改这个网络的属性,改为固定ip,我还要修改一下魔法网关。
186
+ 设置 -> 网络和互联网 -> WLAN 点击 ` VirtWifi ` 连接,安卓会通过DHCP获取ip,一般获得的ip会显示无法访问互联网,这是因为我们的网络无法访问谷歌404网站,接下来我们修改这个网络的属性,改为固定ip,我还要修改一下魔法网关。
211
187
212
188
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/df90ae316d598b0178498e57cb6aa1a0.png )
213
189
@@ -221,17 +197,11 @@ Wifi网络先跳过
221
197
222
198
按实际情况填好IP和网关、DNS之后保存。
223
199
224
- > 保存好之后并不是立即生效的,可关开WLAN重新连接网络之后即可,如果你的网络环境可
225
- > 直接访问Google的话会弹出账号登录同步通讯录等谷歌服务,登录之后即可通过
226
- > ` Google Play ` 下载应用。
200
+ > 保存好之后并不是立即生效的,可关开WLAN重新连接网络之后即可,如果你的网络环境可直接访问Google的话会弹出账号登录同步通讯录等谷歌服务,登录之后即可通过 ` Google Play ` 下载应用。
227
201
228
202
### 3.3 Scrcpy连接Android
229
203
230
- [ scrcpy] ( https://github.com/Genymobile/scrcpy ) 是安卓远程连接的优秀开源项目,基
231
- 于adb连接,可在PC端通过鼠标操作安卓,具有低时延,高帧率,可定制连接质量,可传输
232
- 音频(需要Android 11以上版本)等一系列优点,具体可查看
233
- 其[ 文档] ( https://github.com/Genymobile/scrcpy ) scrcpy支持
234
- ` Linux ` 、` Mac ` 、` Windows ` 三大平台,这里以 ` Windows 11 ` 平台为例
204
+ [ scrcpy] ( https://github.com/Genymobile/scrcpy ) 是安卓远程连接的优秀开源项目,基于adb连接,可在PC端通过鼠标操作安卓,具有低时延,高帧率,可定制连接质量,可传输音频(需要Android 11以上版本)等一系列优点,具体可查看其[ 文档] ( https://github.com/Genymobile/scrcpy ) scrcpy支持 ` Linux ` 、` Mac ` 、` Windows ` 三大平台,这里以 ` Windows 11 ` 平台为例
235
205
236
206
- 安装 ` Scrcpy `
237
207
@@ -267,17 +237,13 @@ scrcpy -e
267
237
268
238
-e 参数指定通过tcpip协议连接,如果你只有一个设备连接到adb可不用这个参数。
269
239
270
- > Scrcpy 2.0 开始原生支持音频传输,但是需要 Android 11 以
271
- > 上。[ sndcpy] ( https://github.com/rom1v/sndcpy ) 需要Android 10以上,所以音频传输
272
- > 是无解的,因为Android 10才加入了音频分享的API,具体可查看这
273
- > 个[ Issue] ( https://github.com/rom1v/sndcpy/issues/25 )
240
+ > Scrcpy 2.0 开始原生支持音频传输,但是需要 Android 11 以上。[ sndcpy] ( https://github.com/rom1v/sndcpy ) 需要Android 10以上,所以音频传输是无解的,因为Android 10才加入了音频分享的API,具体可查看这个[ Issue] ( https://github.com/rom1v/sndcpy/issues/25 )
274
241
275
242
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/33970cc11aea32f0fe9f127cd8758238.png )
276
243
277
244
### 3.4 开启arm兼容模式
278
245
279
- 默认只能运行兼容x86架构的app,运行arm架构的app需要开启arm兼容模式,开启arm转译。
280
- 从[ foxi] ( https://foxi.buduanwang.vip/linux/1996.html/ ) 大佬的网盘下载库文件。
246
+ 默认只能运行兼容x86架构的app,运行arm架构的app需要开启arm兼容模式,开启arm转译。从[ foxi] ( https://foxi.buduanwang.vip/linux/1996.html/ ) 大佬的网盘下载库文件。
281
247
282
248
``` bash
283
249
wget https://foxi.buduanwang.vip/pan/foxi/download/andriod/houdini9_y.zip
@@ -337,8 +303,7 @@ adb.exe -e install Downloads\aida64-v196.apk
337
303
338
304
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/a51cf0fb5076236da33861b4999df74c.png )
339
305
340
- 单核性能接近` Pixel 7 Pro ` ,多核甚至优于小米13,哈哈,当然这里就是图一乐,不同指
341
- 令集的CPU肯定不能这么比。
306
+ 单核性能接近` Pixel 7 Pro ` ,多核甚至优于小米13,哈哈,当然这里就是图一乐,不同指令集的CPU肯定不能这么比。
342
307
343
308
![ image.png] ( https://img.linkzz.eu.org/main/images/2023/11/1a040e9d25bb86bb3db5572c41d33faf.png )
344
309
@@ -360,8 +325,4 @@ intel_gpu_top
360
325
361
326
## 5. 结语
362
327
363
- ` Android-x86 ` 在虚拟机上的表现可以说超出了我的预期,大部分的app均可流畅运行,且
364
- 性能开销尚可,只是9.0 版本的Android不支持音频的传输,所以用来当作云手机的效果会
365
- 大打折扣,只能用于一些挂机app或者游戏的运行,另外有一个类似的Android-x86 发行版
366
- [ BlissOS] ( https://blissos.org/ ) 有基于Android 12的版本,下期可以尝试这个版本是否
367
- 可解决音频传输的问题,让我拥有一个x86的安卓云手机。
328
+ ` Android-x86 ` 在虚拟机上的表现可以说超出了我的预期,大部分的app均可流畅运行,且性能开销尚可,只是9.0版本的Android不支持音频的传输,所以用来当作云手机的效果会大打折扣,只能用于一些挂机app或者游戏的运行,另外有一个类似的Android-x86发行版 [ BlissOS] ( https://blissos.org/ ) 有基于Android 12的版本,下期可以尝试这个版本是否可解决音频传输的问题,让我拥有一个x86的安卓云手机。
0 commit comments