Linux 2018 編譯與使用 anbox [論壇 - Ubuntu 非官方發行版討論]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



Linux 2018 編譯與使用 anbox
會員三級
註冊日期:
2017/3/23 10:15
所屬群組:
已註冊使用者
等級: 10
HP : 0 / 247
MP : 46 / 2840
EXP: 88
離線
安卓模擬器 Anbox 主程式只在 Linux 2020 上面有。
預編譯核心模塊,各大發行版幾乎都是從5.x核心開始有。
其實我試過 Linux 4.9 以上或更早的版本,就可以編譯模塊了。
在Linux 2018 以前我沒試過,編譯的難度應該會大增。
現在已經確定可以正常在2018年的Linux上面跑了。

主要編譯的對象是 anbox 模擬器程式與 anbox-module-dkms

較麻煩的 anbox 因為 cmake 需要3.13以上的版本,要編譯一堆依賴。

anbox-module-dkms github 有公版的可用,Linux 原始碼其實也有內附,但是需要補釘才能編成模塊,所以建議用公版就好。

工具更新:

####################################################
### Build libarchive on Debian
####################################################
# Install Build Depends:
sudo apt-get install pkg-config libbz2-dev liblz4-dev liblzma-dev libxml2-dev libzstd-dev zlib1g-dev libacl1-dev libext2fs-dev libattr1-dev sharutils nettle-dev locales

wget https://www.libarchive.org/downloads/libarchive-3.4.0.tar.gz
tar zxvf libarchive-3.4.0.tar.gz
cd libarchive-3.4.0

./configure \
--build=x86_64-linux-gnu \
--prefix=/usr \
--includedir=/usr/include \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-silent-rules \
--libdir=/usr/lib/x86_64-linux-gnu \
--libexecdir=/usr/lib/x86_64-linux-gnu \
--disable-maintainer-mode \
--disable-dependency-tracking \
--without-openssl \
--with-nettle \
--enable-bsdtar=shared \
--enable-bsdcpio=shared \
--enable-bsdcat=shared

make -j$(nproc)
sudo make install

####################################################
### Build cmake on Debian
####################################################
# Install Build Depends:
sudo apt-get install libbz2-dev zlib1g-dev libcurl4-openssl-dev libexpat1-dev libjsoncpp-dev liblzma-dev libncurses5-dev librhash-dev libuv1-dev procps python3-sphinx

wget https://cmake.org/files/v3.16/cmake-3.16.3.tar.gz
tar zxvf cmake-3.16.3.tar.gz

cd cmake-3.16.3
rm -rf build
mkdir -p build
cd build

../bootstrap \
--prefix=/usr \
--docdir=/share/doc/cmake \
--mandir=/share/man \
--init=../build-flags.cmake \
--system-libs \
--sphinx-man \
--verbose

make -j$(nproc)
sudo make install


####################################################
### Build googletest on Debian
####################################################
git clone https://github.com/google/googletest.git
cd googletest
rm -rf obj-x86_64-linux-gnu
mkdir obj-x86_64-linux-gnu
cd obj-x86_64-linux-gnu

cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
-DCMAKE_INSTALL_RUNSTATEDIR=/run \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON \
-DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON \
"-GUnix Makefiles" \
-DCMAKE_VERBOSE_MAKEFILE=ON

make -j$(nproc)
sudo make install

sudo install -D -m644 CMakeLists.txt /usr/src/googletest/CMakeLists.txt
sudo cp -r googlemock /usr/src/googletest/
sudo cp -r googletest /usr/src/googletest/
sudo ln -sf googletest/googletest /usr/src/gmock
sudo ln -sf googletest/googlemock /usr/src/gtest

1/1 14:24:44
應用擴展 工具箱
回覆: Linux 2018 編譯與使用 anbox
會員三級
註冊日期:
2017/3/23 10:15
所屬群組:
已註冊使用者
等級: 10
HP : 0 / 247
MP : 46 / 2840
EXP: 88
離線
####################################################
### Build anbox on Debian
####################################################
# Install Build Depends:
sudo apt-get install python3 protobuf-compiler

sudo apt-get install libboost-filesystem-dev libboost-iostreams-dev libboost-log-dev libboost-program-options-dev libboost-system-dev libboost-test-dev libcap-dev libegl1-mesa-dev libgles2-mesa-dev libproperties-cpp-dev libprotobuf-dev libsdl2-dev libsdl2-image-dev libsystemd-dev lxc-dev

sudo apt-get install libdw-dev binutils-dev libdwarf-dev doxygen libglm-dev libexpat1-dev

####################################################
原始碼自行選擇,看要2018版、還是2020年版本
# download anbox 2018
wget http://deb.debian.org/debian/pool/contrib/a/anbox/anbox_0.0~git20181014.orig.tar.gz
NVER=20181014

# download anbox 2020
wget http://deb.debian.org/debian/pool/contrib/a/anbox/anbox_0.0~git20200526.orig.tar.gz
NVER=20200526

tar zxvf anbox_0.0~git${NVER}.orig.tar.gz

cd anbox-0.0~git${NVER}

# Patch python
sed -i 's/python2/python3/g' scripts/gen-emugl-entries.py
# Patch GMock
rm cmake/FindGMock.cmake
wget -O cmake/FindGMock.cmake https://raw.githubusercontent.com/anbox/anbox/master/cmake/FindGMock.cmake

# Build anbox
rm -rf build
mkdir -p build
cd build

cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib/x86_64-linux-gnu \
-DENABLE_WAYLAND=OFF \
-DCMAKE_CXX_FLAGS="-Wno-error=implicit-fallthrough -Wno-error=missing-field-initializers" \
-DCMAKE_BUILD_TYPE=Release

make -j$(nproc)

sudo make install

cd ..


mkdir -p /var/lib/anbox
mkdir -p /usr/share/applications
mkdir -p /usr/lib/systemd/user
mkdir -p /lib/systemd/system

install -D -m644 snap/gui/icon.png /usr/share/pixmaps/anbox.png
install -D -m755 scripts/anbox-bridge.sh /usr/share/anbox/anbox-bridge.sh
install -D -m755 scripts/anbox-shell.sh /usr/share/anbox/anbox-shell.sh

cat > anbox.desktop << EOF
[Desktop Entry]
Name=Anbox
GenericName=Anbox
Comment=Android in a box
Version=1.0
Type=Application
Icon=anbox
Exec=anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity
Terminal=false
Keywords=android;container;
Categories=Utility;
EOF

sudo mv anbox.desktop /usr/share/applications/anbox.desktop

cat > anbox-session-manager.service << EOF
[Unit]
Description=Anbox Session Manager
Documentation=man:anbox(1)

[Service]
ExecStart=/usr/bin/anbox session-manager

[Install]
WantedBy=default.target
EOF

sudo mv anbox-session-manager.service /usr/lib/systemd/user/anbox-session-manager.service

cat > anbox-container-manager.service << EOF
[Unit]
Description=Anbox Container Manager
Documentation=man:anbox(1)
After=network.target
Wants=network.target
ConditionPathExists=/var/lib/anbox/android.img

[Service]
ExecStartPre=/sbin/modprobe ashmem_linux
ExecStartPre=/sbin/modprobe binder_linux
ExecStartPre=/usr/share/anbox/anbox-bridge.sh start
ExecStart=/usr/bin/anbox container-manager --daemon --privileged --data-path=/var/lib/anbox
ExecStopPost=/usr/share/anbox/anbox-bridge.sh stop

[Install]
WantedBy=multi-user.target
EOF

sudo mv anbox-container-manager.service /lib/systemd/system/anbox-container-manager.service

1/1 14:30:38
應用擴展 工具箱
回覆: Linux 2018 編譯與使用 anbox
會員三級
註冊日期:
2017/3/23 10:15
所屬群組:
已註冊使用者
等級: 10
HP : 0 / 247
MP : 46 / 2840
EXP: 88
離線
Anbox 使用

# 下載 android.img
wget https://build.anbox.io/android-images/2018/07/19/android_amd64.img
sudo mkdir -p /var/lib/anbox
sudo cp android_amd64.img /var/lib/anbox/android.img

# 載入模塊
sudo modprobe ashmem_linux
sudo modprobe binder_linux

# 啟動 Anbox 服務
sudo systemctl status anbox-container-manager.service
sudo systemctl start anbox-container-manager.service
sudo systemctl stop anbox-container-manager.service

然後打開程式選單的 Anbox 即可。
或執行:
anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity

# 模擬器安裝 google play
sudo systemctl start anbox-container-manager.service
sudo apt install curl wget lzip unzip squashfs-tools
wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh
sed -i '/anbox-container-manager.service.d/s/etc/lib/g' install-playstore.sh
sudo mkdir -p /lib/systemd/system/anbox-container-manager.service.d

chmod +x install-playstore.sh
sudo ./install-playstore.sh
sudo systemctl restart anbox-container-manager.service



1/1 14:39:15
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.