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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android虚拟化

發布時間:2024/3/13 Android 114 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android虚拟化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
硬件環境:x86 PC 軟件環境:Windows; Ubuntu20.04; AOSP 12 目標:Glodfish,Cuttlefish,Trout三種Android Automotive模擬環境

1 Goldfish AAOS

  • Goldfish也成Emulator,使用qemu啟動Android虛擬機,用于APP開發。可以在windows上模擬器啟動aaos,也可以ubuntu上通過qemu啟動aaos模擬器。

1.1 windows Android-studio goldfish

  • Android-studio goldfish
    注意:必須要下載android studio canary版本才能更新AAOS的系統鏡像,地址為:https://developer.android.com/studio/archive
    打開Android Studio -> 創建虛擬設備-> Select a system image -> x86 Image -> 安裝最新的AAOS鏡像. 完成后就可啟動AAOS 12(API 32)模擬器了

1.2 Linux Emulator AAOS

  • 1 下載谷歌repo
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
  • 1.1 下載清華repo
#若是沒有外網,下載清華repo curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo PATH=/repo-path:$PATH#下載android時使用清華repo repo init -u ssh://10.28.2.63:29418/BST/platform/manifests -m Android12.1.xml --depth=1 --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
  • 2 準備編譯環境
sudo apt-get update sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip sudo apt-get install -y lib32stdc++6 sudo apt-get install git sudo apt-get install libssl-dev sudo apt-get install libncurses5
  • 3 下載AOSP

3.1 若有外網,下載谷歌aosp

repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1 repo sync -j4

3.2 若無外網,下載清華aosp

#若沒有外網不建議下谷歌或清華AOSP,時間太長,老斷,直接下載清華的初始化包,約190G wget -U -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar #解壓初始化包 tar xvf aosp-latest.tar #解壓得到的 AOSP工程目錄,ls啥也沒有,只有一個隱藏的.repo目錄 cd aosp #獲得master最新代碼 repo sync -j4 #后續可以僅checkout代碼 #獲取某個版本代碼,參考如下 cd .repo/manifests git branch -a #查看Android分支 repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.1.0_r8 --depth=1 #如切換到Android 12分支 repo sync -j4 #同步一遍即可得到基于Android 12的完整目錄,-j最多4,不然服務器并發受不了503
  • 4 編譯AOSP
source build/envsetup.sh #goldfish模擬器版本 lunch sdk_car_x86_64-userdebug make -j4 #開始編譯,有問題的話減少-j并發數,可以減少CPU和內存壓力
  • 5 啟動模擬器
#啟動模擬器,顯示/音頻功能OK emulator &

2 CuttleFish AAOS

  • Cuttlefish相比于Goldfish Virtio更加徹底,用于模擬測試ASOP。

2 1. 準備環境

  • Android 12 依賴庫,其實使用前面A11的依賴一樣能編譯,已安裝忽略,master分支無需安裝jdk
sudo apt-get install -y python git zip unzip curl wget llvm git-core gnupg bison flex gperf build-essential make zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl libncurses5

2.2 構建運行cultfish

  • 1.檢查ubuntu20.04是否支持KVM
ls /dev/kvm 或者grep -c -w "vmx\|svm" /proc/cpuinfo
  • 2.構建和安裝cultfish-common,重啟后會安裝驅動和udev規則
sudo apt install -y git devscripts config-package-dev debhelper-compat curl golang; git clone https://github.com/google/android-cuttlefish; cd android-cuttlefish;
  • 2.1最新版已無需升級go版本
for dir in base frontend; do cd $dir debuild -i -us -uc -b -d cd ..done 此步驟可能包依賴問題,參考后面編譯問題 sudo dpkg -i ./cuttlefish-base_*_*64.deb || sudo apt-get install -f sudo dpkg -i ./cuttlefish-user_*_*64.deb || sudo apt-get install -f; sudo usermod -aG kvm,cvdnetwork,render $USER; sudo reboot
  • 3下載AOSP
#可以外網的下載谷歌AOSP12.1.0_r11. --depth=1只同步最近一次提交 repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r11 --depth=1 cd aosp repo sync -j4
  • 4 構建AOSP
source build/envsetup.sh #cultfish模擬器,x86服務器,只能編x86的 lunch aosp_cf_x86_auto-userdebug #lunch aosp_cf_arm64_auto-userdebug make -j4 #make dist DIST_DIR=cf_x86_64
  • 5.運行cultfish
#若想使用qemu -vm_manager=qemu_cli,默認使用crosvm作為vmm launch_cvd #啟動一個CVD實例 #cvd_status #stop_cvd
  • 6.webrtc訪問圖形. 瀏覽器打開 https://localhost:8443

  • 7.VNC訪問圖形
#launch_cvd -start_vnc_server=true (android12還保留,master已經刪掉了) 下載tightvnc viewer (jar file): https://www.tightvnc.com/download.php 安裝java: sudo apt install openjdk-11-jre 啟動tightvnc ubuntu java -jar tightvnc-jviewer.jar #use 127.0.0.1:6444 java -jar tightvnc-jviewer.jar -ScalingFactor=80 -Tunneling=no -host=localhost -port=6444 或者啟動tightvnc windows ip::6444

2.3 CI鏡像啟動Cuttlefish

#谷歌CI構建 http://ci.android.com/ -> aosp_master -> userdebug -> Artifacts. 有cf phone的鏡像 下載cvd-host_package.tar.gz和aosp_cf_x86_64_phone-img-xxxxxx.zip mkdir cf; cd cf tar xvf /path/to/cvd-host_package.tar.gz unzip /path/to/aosp_cf_x86_64_phone-img-xxxxxx.zip #啟動vm HOME=$PWD ./bin/launch_cvd #遠程使用webrtc看界面,打開https://localhost:8443

3 Trout

  • Trout是谷歌面向汽車座艙領域的虛擬化Android,底層全部使用Virtio,目標做到無縫搭配各種Hypervisor,如8155上商用的qnx
    hypervisor;谷歌demo的8155 coqos hypervisor;Trout也可以在PC上模擬,使用qemu/crosvm + KVM這種虛擬化方案。
  • 谷歌的Trout還有點問題,需要設置Vulkan才能運行圖形
# 1.下載android源碼樹,已用前文的清華源下載后可忽略 repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1 repo sync -j4 # 2.構建環境 source build/envsetup.sh # 2.1編x86或者Arm lunch aosp_trout_x86-userdebug #lunch aosp_trout_arm64-userdebug make -j4 #make dist DIST_DIR=trout_x86 #編譯為CI包 # 3.編譯trout后,運行虛擬機 launch_cvd

4 問題

4.1 cuttlefish-common安裝失敗

  • 更改ubuntu的源,這里以中科大的為例
sudo vim /etc/apt/sources.list
  • 添加國內的源,例如 ustc
deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted deb http://mirrors.ustc.edu.cn/ubuntu/ focal universe deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates universe deb http://mirrors.ustc.edu.cn/ubuntu/ focal multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security universe deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security multiverse
  • 更新源
sudo apt update
  • 更新軟件
sudo apt-get upgrade
  • 安裝軟件
sudo dpkg -i ../cuttlefish-base_0.9.24_amd64.deb || sudo apt-get install -f; sudo dpkg -i ../cuttlefish-user_0.9.24_amd64.deb || sudo apt-get install -f;

4.2 scrcpy顯示

  • scrcpy利用adb把圖形顯示出來
#編譯scrcpy sudo apt install ffmpeg libsdl2-2.0-0 adb wget gcc git pkg-config meson ninja-build libsdl2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libusb-1.0-0 libusb-1.0-0-dev git clone https://github.com/Genymobile/scrcpy cd scrcpy/ ./install_release.sh #設備起來后,運行 scrcpy --tcpip=0.0.0.0:6520

5 參考

https://blog.csdn.net/linkwj/article/details/119902108?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-119902108-blog-117474587.pc_relevant_default&depth_1-utm_source=distribute.pc_r
清華AOSP
Goldfish內核調試

總結

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

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