Android 模擬器相關(guān)基礎(chǔ)知識(shí)

一芥备、前言

在 Android 開發(fā)過程中會(huì)經(jīng)常使用到模擬器舌菜,常用的方式是借助 Android Studio 去創(chuàng)建和運(yùn)行模擬器日月,或者是使用第三方的例如雷電爱咬、逍遙台颠、genymotion 等串前,在本篇文章中梳理一下通過命令行操作模擬器的的方法荡碾,以及串口和鏡像替換的相關(guān)知識(shí)局装。

二铐尚、工具及環(huán)境準(zhǔn)備

2.1 下載 Android SDK

訪問 https://developer.android.google.cn/studio 鏈接宣增,下載命令行工具爹脾,其中包含 avdmanager、sdkmanager:

2.2 安裝必須的 SDK 包

使用 SDK 自帶工具 sdkmanager落竹,位于 cmdline-tools/bin 目錄下货抄,注意要使用模擬器則開發(fā)包中必須存在這四個(gè)目錄:emulator蟹地、 platform-tools积暖、system-images呀酸、platforms琼梆,可以分別使用如下命令下載:

#先安裝最新版本 cmdline-tools
./sdkmanager --sdk_root=/home/zsk/Android/sdk/ "cmdline-tools;latest"

#切換至 cmdline-tools/latest/bin 目錄下
./sdkmanager --install "emulator"
./sdkmanager --install "platform-tools"
./sdkmanager "system-images;android-28;default;x86_64"

# 這一步可以不用下載茎杂,直接創(chuàng)建platforms文件夾即可
./sdkmanager --install "platforms;android-28" 

這里指定了系統(tǒng)版本和架構(gòu),default 這里我理解是不帶谷歌系統(tǒng)服務(wù)的版本,還可以選擇 google_apisandroid-automotive-playstore 兩個(gè)選項(xiàng)刽脖,分別代指包含谷歌服務(wù)和車載版本。

2.3 設(shè)置模擬器存放路徑

創(chuàng)建的模擬器往往是比較大的,以 windows 為例是默認(rèn)存儲(chǔ)在 C 盤中院水,這樣顯然是不合適的,同時(shí)存在某些情況檬某,例如為了建立統(tǒng)一的開發(fā)環(huán)境恢恼,需要將一套模擬器 copy 給多個(gè)人使用,那么顯示的指定模擬器存放路徑無疑是更加方便的初坠,現(xiàn)在分別就 Linux 做簡單闡述

SDK 包下創(chuàng)建 avd 目錄用于存放模擬器

配置 ANDROID_SDK_HOME 環(huán)境變量碟刺,注意此變量名不可修改

  # ~/.bashrc 或 /etc/profile
  export ANDROID_SDK_HOME=$HOME/xxx/sdk/avd
  export PATH=$PATH:$ANDROID_SDK_HOME

如有需要,還要修改 .android/avd 目錄下已經(jīng)創(chuàng)建的模擬器的配置文件吴菠,例如 device9.0.ini 中修改
path=/.../sdk/avd/.android/avd/device9.0.avd 即可

2.4 創(chuàng)建模擬器

使用 SDK 自帶工具 avdmanger,位于 Android/SDK/tools/bin 目錄下,主要指令如下:

指令 描述
list酿矢、list avd、list target蜜暑、list device 羅列存在的模擬器
create avd 創(chuàng)建模擬器
move avd 移動(dòng)或重命名模擬器
delate avd 刪除模擬器

create avd 主要指令如下:

指令 描述
-c 設(shè)置模擬器 SD 卡大小
-k 模擬器的系統(tǒng)映像的程序包路徑
-b 設(shè)置模擬器的 ABI
-n 模擬器名字
-f 強(qiáng)制創(chuàng)建(會(huì)覆蓋現(xiàn)有模擬器)

實(shí)例如下:

./avdmanager create avd -n myAVD -k "system-images;android-28;default;x86_64" -b x86_64 -c 2048M -f

2.5 啟動(dòng)模擬器

使用 SDK 自帶的工具 emulator肛捍,位于 /Android/SDK/emulator 目錄下:

# -writable-system 不添加此參數(shù) 會(huì)導(dǎo)致remount失敗
./emulator -avd myAVD -writable-system

三拙毫、鏡像替換

1恬偷、選擇編譯類型帘睦,同模擬器架構(gòu)一樣竣付,例如 aosp_x86_64-eng
2滞欠、編譯完成之后,在 out/target/product/generic_x86_64 目錄下逸绎,找到對應(yīng)修改的 img 用于替換模擬器中的 img棺牧。注意 system-qemu.imgvendor-qemu.img颊乘,這兩個(gè)鏡像是專門為模擬器運(yùn)行制作的如果選擇 system.imgvendor.img乏悄,則 avd 運(yùn)行失敗
3檩小、將 system-qemu.imgvendor-qemu.img规求,重命名為 system.imgvendor.img
4家妆、替換 Android/SDK/system-images/android-28/default/x86_64/ 下的對應(yīng) img
5冕茅、重新啟動(dòng)模擬器

四姨伤、模擬串口映射

./emulator -avd myAVD -writable-system -qemu -serial /dev/ttyUSB0

五乍楚、關(guān)于串口的一些指令

1徒溪、設(shè)置串口的波特率

stty -F /dev/ttyUSB0 raw 460800

2、獲取串口的基本信息

stty -F /dev/ttyUSB0

3臊泌、向串口傳輸文件

cat test.txt > /dev/ttyUSB0

4、展示串口輸出數(shù)據(jù)

cat /dev/ttyUSB1

5嫂拴、保存串口輸出數(shù)據(jù)

cat /dev/ttyUSB1 > log.txt

6贮喧、向串口輸入數(shù)據(jù)/指令

#這里可能需要先使用 stty 指令設(shè)置好串口的波特率之后才能寫入數(shù)據(jù)
echo -e "\$CFGPRT,1,0,115200,1,3\r\n" > /dev/ttyUSB1
echo -e "\$CFGSAVE\r\n" > /dev/ttyUSB1

7、grep過濾串口數(shù)據(jù)操作

# --binary-files=text 表示將二進(jìn)制視為文本搜索
cat ttyUSB1 | grep --binary-files=text xxx

7辩恼、Android 應(yīng)用層打開串口時(shí)需要注意 seLinux 權(quán)限饱普,具體使用方式可參見 項(xiàng)目實(shí)例

參考

[ 1 ] 手動(dòng)修改android模擬器的system.img
[ 2 ] 如何使用avdmanager從命令行正確創(chuàng)建Android模擬器套耕?
[ 3 ] Android模擬器掛載虛擬串口進(jìn)行通信之踩坑記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冯袍,一起剝皮案震驚了整個(gè)濱河市康愤,隨后出現(xiàn)的幾起案子征冷,更是在濱河造成了極大的恐慌,老刑警劉巖肴捉,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叔收,死亡現(xiàn)場離奇詭異饺律,居然都是意外死亡复濒,警方通過查閱死者的電腦和手機(jī)巧颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門洛二,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晾嘶,“玉大人,你說我怎么就攤上這事垒迂。” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵吏奸,是天一觀的道長。 經(jīng)常有香客問我,道長泊碑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮腹忽,結(jié)果婚禮上留凭,老公的妹妹穿的比我還像新娘。我一直安慰自己兼耀,他們只是感情好求冷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布匠题。 她就那樣靜靜地躺著韭山,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梦裂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音答憔,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渴丸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谱轨,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼诗茎,長吁一口氣:“原來是場噩夢啊……” “哼献汗!你這毒婦竟也來了罢吃?” 一聲冷哼從身側(cè)響起尿招,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤就谜,失蹤者是張志新(化名)和其女友劉穎丧荐,沒想到半個(gè)月后虹统,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呻逆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茬腿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悴品,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苔严,我是刑警寧澤届氢,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布退子,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丸凭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望向拆。 院中可真熱鬧,春花似錦浓恳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至人乓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間色罚,已是汗流浹背戳护。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人切蟋。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像喘鸟,于是被迫代替她去往敵國和親驻右。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容