日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

运行 Anbox

發布時間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 运行 Anbox 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

Anbox 運行時主要由兩個分開的實例構成:

  • 容器管理器
  • 會話管理器

容器管理器的工作是管理容器的建立,并在它的生命周期內維護它。它的職責是啟動我們用以運行 Android 系統的 LXC 環境。

會話管理器運行于登錄到 Linux 系統的用戶的會話內。它將通過一些 sockets 與運行在容器內的 Android 實例通信,并提供與 Linux 系統的集成。它還扮演多路復用器的角色,將 Android 應用映射為桌面環境的單個窗口。當前所有的應用窗口由相同的進程(會話管理器)所有。應用邏輯本身依然位于 Android 容器內的另外的進程中。

下圖展示了一個總體的架構:

應用映射

Android 應用被映射為桌面環境中單獨的窗口。這是通過插入 Android hwcomposer HAL
模塊來實現的,該模塊接收一組圖層以在屏幕上合成。Anbox 告訴 SurfaceFlinger 通過它的 hwcomposer 實現為每個應用獲得圖層,并把這與它從 Android WindowManager 接收的其它信息結合,來把獨立的圖層映射為應用。更多詳情請查看如下的實現:

  • android/hwcomposer
  • src/anbox/graphics/layer_composer.cpp
  • src/anbox/wm/manager.cpp

編譯 Android 鏡像

對于 Anbox,我們使用的是 Android 的最小定制版本,但是基于 Android 開放源代碼項目
最近版本的所有工作。

要重新構建 Android 鏡像,你首先需要獲得所有相關的源碼。這將消耗你大量的磁盤空間(~40GB)。AOSP 建議至少要有 100 GB 的空閑磁盤空間。也可以查看 他們的 頁面。

一般來說,為了構建 Anbox Android 鏡像,位于 AOSP 工程的頁面 的指南是適用的。此處我們將不再專門描述通常如何構建 Android 系統,而只聚焦于 Anbox 所需的步驟。

獲得所有相關源碼

首先建立一個新的 workspace,你將在其中下載所有的源碼。

$ mkdir $HOME/anbox-work

現在,通過下載 manifest 并啟動獲取源碼來初始化倉庫:

$ cd $HOME/anbox-work $ repo init -u https://github.com/anbox/platform_manifests.git -b anbox $ repo sync -j4

依賴于你的網絡連接,這將消耗一些時間。

構建 Android

當所有的源碼都成功地下載之后,你就可以啟動構建 Android 本身了。

首先通過 envsetup.sh 腳本初始化環境。

$ . build/envsetup.sh

然后使用 lunch 初始化構建。

$ lunch anbox_x86_64-userdebug

支持的構建目標的完整類表如下:

  • anbox_x86_64-userdebug
  • anbox_armv7a_neon-userdebug
  • anbox_arm64-userdebug

現在通過如下命令構建所有其它的東西:

$ make -j8

一旦構建完成,我們需要獲取結果,并用它們創建適用于 Anbox 的鏡像文件。

$ cd $HOME/anbox-work/vendor/anbox $ scripts/create-package.sh \$PWD/../../out/target/product/x86_64/ramdisk.img \$PWD/../../out/target/product/x86_64/system.img

這將在當前目錄下創建一個名為 android.img 的文件。

現在,你就可以在 Anbox 運行時中使用使用你的定制鏡像了。

以自己構建的 android.img 運行 Anbox

如果你已經在你的系統上安裝了 Anbox,你需要先停掉它。在通過 Anbox 安裝器腳本完成 Anbox 安裝并 snap 之后,Anbox 會自動啟動,查看主機的進程列表將看到如下內容:

$ ps -aux | grep anbox root 7113 0.0 0.0 766588 12308 ? Ssl 14:46 0:00 /snap/anbox/65/usr/bin/anbox container-manager --data-path=/var/snap/anbox/common/ --android-image=/snap/anbox/65/android.img --daemon hanpfei+ 8327 7.2 1.5 2464708 252328 ? Sl 14:49 0:01 /snap/anbox/65/usr/bin/anbox session-manager root 8339 0.0 0.0 36776 3616 ? Ss 14:49 0:00 /snap/anbox/current/libexec/lxc/lxc-monitord /var/snap/anbox/common/containers 14 root 8341 0.0 0.0 772888 8156 ? Ss 14:49 0:00 [lxc monitor] /var/snap/anbox/common/containers default 100000 8350 0.0 0.0 7920 5912 ? Ss 14:49 0:00 /system/bin/sh /anbox-init.sh 100000 8423 0.0 0.0 16728 9260 ? Sl 14:49 0:00 /system/bin/anboxd 110000 8877 0.8 0.5 1038888 95412 ? Sl 14:49 0:00 org.anbox.appmgr hanpfei+ 9094 0.0 0.0 19300 976 pts/21 S+ 14:49 0:00 grep --color=auto anbox

此時,可以這樣做來停掉 Anbox:

$ sudo systemctl stop snap.anbox.container-manager

再次查看主機的進程列表,將無法再看到 Anbox 相關的進程。

同時停掉它們是很重要的,容器管理器和會話管理器。

一旦兩個服務都被停掉了,你可以通過運行如下命令用定制的 android.img 啟動容器管理器:

$ datadir=$HOME/anbox-data $ mkdir -p $datadir/rootfs $ sudo anbox container-manager \--android-image=/path/to/android.img \--data-path=$datadir

這將啟動容器管理器并在特定的數據路徑中設置容器根文件系統。

$ ls -alh $HOME/anbox-data total 20K drwxrwxr-x 5 ubuntu ubuntu 4,0K Feb 22 08:04 . drwxrwxr-x 16 ubuntu ubuntu 4,0K Feb 22 08:04 .. drwxr-xr-x 2 100000 100000 4,0K Feb 22 08:04 cache drwxr-xr-x 2 100000 100000 4,0K Feb 22 08:04 data drwxr-xr-x 2 root root 4,0K Feb 22 08:04 rootfs

注意: 如果你查看 $HOME/anbox-data/rootfs 目錄,你將不會看到任何東西,因為容器管理派生了一個私有的掛載命名空間,它阻止了外面查看它的掛載點。

cache 和 data 目錄被綁定-掛載到 rootfs,位于 rootfs/data 和 rootfs/cache。

原文
原文

總結

以上是生活随笔為你收集整理的运行 Anbox的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。