版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。
目录
minLevel1
maxLevel3
outlinefalse
stylenone
typelist
printablefalse

...

https://github.com/anbox/anbox-moduleshttps://github.com/choff/anbox-modules

1、下载anbox宿主机源码

代码块
git clone https://github.com/anbox/anbox.git --recurse-submodules

2、安装编译依赖

代码块
sudo apt install build-essential cmake cmake-extras cmake-data debhelper dbus google-mock libboost-dev libboost-filesystem-dev \
libboost-log-dev libboost-iostreams-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libboost-thread-dev \
libcap-dev libexpat1-dev libsystemd-dev libegl1-mesa-dev libgles2-mesa-dev libglm-dev libgtest-dev liblxc1 libproperties-cpp-dev \
libprotobuf-dev libsdl2-dev libsdl2-image-dev lxc-dev pkg-config protobuf-compiler python3-minimal

相关安装依赖报错解决办法,见下面的编译报错问题集。

3、编译

代码块
cd anbox
mkdir build
cd build/
cmake ..
make -j8
3.1 编译报错问题集
  • 问题1

/home/phytium/ptg/anbox/src/anbox/cmds/launch.h:24:10: fatal error: systemd/sd-bus.h: 没有那个文件或目录
   24 | #include <systemd/sd-bus.h>

...

这里采用dpkg -i 强制安装,apt download libsystemd-dev  && sudo dpkg -i libsystemd-dev_245.4-4kylin3.11k14_arm64.deb

  • 问题2

/home/phytium/ptg/anbox/src/anbox/ui/splash_screen.h:23:10: fatal error: SDL2/SDL.h: 没有那个文件或目录
   23 | #include <SDL2/SDL.h>

  • 解决办法

需要安装libsdl2-dev

phytium@phytium-d2000:~/ptg/download_debs$ sudo apt install libsdl2-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
您也许需要运行“apt --fix-broken install”来修正上面的错误。
下列软件包有未满足的依赖关系:
 libsdl2-dev : 依赖: libasound2-dev 但是它将不会被安装
               依赖: libglu1-mesa-dev 但是它将不会被安装
               依赖: libibus-1.0-dev 但是它将不会被安装
               依赖: libpulse-dev 但是它将不会被安装
               依赖: libsndio-dev 但是它将不会被安装
               依赖: libxss-dev 但是它将不会被安装
               依赖: libxt-dev 但是它将不会被安装
               依赖: libxv-dev 但是它将不会被安装
               依赖: libxxf86vm-dev 但是它将不会被安装
 libsystemd-dev : 依赖: libsystemd0 (= 245.4-4kylin3.11k14) 但是 245.4-4kylin3.11k30 正要被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
phytium@phytium-d2000:~/ptg/download_debs$ sudo apt install libpulse-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
您也许需要运行“apt --fix-broken install”来修正上面的错误。
下列软件包有未满足的依赖关系:
 libpulse-dev : 依赖: libpulse0 (= 1:13.99.1-1kylin32) 但是 1:13.99.1-1kylin90 正要被安装
                依赖: libpulse-mainloop-glib0 (= 1:13.99.1-1kylin32) 但是 1:13.99.1-1kylin90 正要被安装
 libsystemd-dev : 依赖: libsystemd0 (= 245.4-4kylin3.11k14) 但是 245.4-4kylin3.11k30 正要被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
phytium@phytium-d2000:~/ptg/download_debs$ apt search libpulse0
正在排序... 完成
全文搜索... 完成  
libpulse0/now 1:13.99.1-1kylin90 arm64 [已安装,本地]
  PulseAudio client libraries

...

这里采用dpkg -i 强制安装,apt download libsdl2-dev  && sudo dpkg -i libsdl2-dev_2.0.10+dfsg1-3_arm64.deb

  • 问题3

/home/phytium/ptg/anbox/src/anbox/ui/splash_screen.cpp:23:10: fatal error: SDL2/SDL_image.h: 没有那个文件或目录
   23 | #include <SDL2/SDL_image.h>

  • 解决办法

需要安装libsdl2-image-dev,采取同上的方式进行安装,apt download libsdl2-image-dev  && sudo dpkg -i libsdl2-image-dev_2.0.5+dfsg1-2_arm64.deb

4、安装

代码块
sudo make install

5、配置容器启动服务,使用anbox运行自己编译好的Android镜像

(1)创建好挂载目录:

代码块
datadir=$HOME/anbox-data
mkdir -p $datadir/rootfs

(2)将之前编译好的arm64版本的安卓系统镜像android.img 放在 /home/phytium/目录下。

(3)编写服务启动配置文件anbox-container-manager.service,文件内容如下:

代码块
[Unit]
Description=Anbox Container Manager
 
[Service]
ExecStart=/usr/local/bin/anbox container-manager --daemon --privileged --android-image=/home/phytium/android.img --data-path=/home/phytium/anbox-data --container-network-gateway=192.168.250.1 --container-network-address=192.168.250.2
 
[Install]
WantedBy=multi-user.target

(4)将service文件放置系统目录

代码块
sudo cp anbox-container-manager.service /usr/lib/systemd/system/

(5)enable服务

代码块
sudo systemctl enable anbox-container-manager.service

(6)启动anbox容器

代码块
sudo systemctl start anbox-container-manager.service

后面重启系统时会自动启动anbox容器

6、配置appmanager主界面启动快捷方式 appmgr.desktop

文件内容如下:

代码块
[Desktop Entry]
Name=Anbox Application Manager
GenericName=Anbox Application Manager
Version=1.0
Type=Application
Icon=${HOME}/.config/gui/icon.png
Exec=anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity
Terminal=false

将文件放置系统applications目录

代码块
sudo cp appmgr.desktop /usr/share/applications/

7、启动anbox应用管理界面

在启动栏点击Anbox Application Manager快捷图标,即可拉起anbox应用管理主界面。

...