Android系统镜像编译、烧录及调试
編譯
Android編譯工具鏈:Jack+ninja
問題:Jack沒法多用戶同時編譯,
Google(?Communication error with Jack server?):https://code.google.com/p/android/issues/detail?id=194027
編譯失敗信息:
No Jack server running. Try 'jack-admin start-server'
ninja: build stopped: subcommand failed.
18:24:23 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
#### make failed to build some targets (02:01:51 (hh:mm:ss)) ####
只要有一個人已經編譯過Android的code了,其他人就沒法編譯了,因為編譯完了jack的端口也是不會釋放的。
如果編譯失敗 可以通過?jack-admin list-server?看當前是否有人已占用了server的jack端口
這個時候可以要求占有者 通過?jack-admin kill-server來釋放這個端口。
解決辦法:
jack 默認的 service port是8076,admin port是8077
1. 修改vi?~/.jack-settings?文件中兩個端口號
SERVER_PORT_SERVICE=8076
SERVER_PORT_ADMIN=8077
2. 修改?vi ~/.jack-server/config.properties?文件中兩個端口號(這個文件在編譯一次后會自己生成,如果沒有這個文件,先編譯一次源碼,報錯后再修改)(端口號改成的數值不能和其他人一樣,否則會有問題)
jack.server.service.port=xxxx
jack.server.admin.port=xxxx
1和2修改的端口號要統一
修改后通過jack-admin list-server,就可以看到同時有多個jack server了。
首先確認編譯的java版本,設置環境變量(source build/envsetup.sh),lunch對應的版本(user版本不支持root權限,開發者一般使用user-debug版本),make otapackage -jx(x表示使用多少線程資源編譯)
燒錄
用兩個接頭以及一條四根的排線制作一個串口板連接線. 連線時要保證引腳一一對應, 即開發板上的GND連接到串口板的GND, 開發板TX連接到串口板TX, 開發板RX連接到串口板RX, 開發板VCC連接到串口板VCC.
注 : 部分板子焊接/布線等可能存在差異, 必要時可嘗試交換TX/RX看是否可以正常使用串口.
開發板重新燒寫系統鏡像:
安裝CP2102串口驅動,
1、“reboot”命令系統重啟,使用 “Enter or CTRL+C”中斷在U-boot階段。
2、使用“store scrub 0”擦除Flash(這個指令會擦除nand原廠標識,謹慎使用)或者在U-boot下輸入"update"命令,此時在設備管理器中會出現一個名為libusb-win32 Usb Devices的設備組
3、使用燒寫線連接開發板與PC,使用USB燒寫工具進行鏡像燒錄,燒錄完成后重啟即可。
筆者使用“store scrub 0”擦除Flash后進行第三步出現過USB燒錄工具檢測不到開發板的問題,并且開發板上電一直是亮紅燈,表示當前已經是空板狀態。(挺嚇人的,意為還要使用JTAG工具重新燒錄初始化鏡像文件),后面電腦重啟,再連接USB燒錄線,打開USB燒錄工具,結果檢測到連接成功,直接燒錄系統鏡像即可。
調試
使用外接顯示器進行系統調試時,即便有遙控器并連接鼠標,仍不便進行編輯框輸入,可以使用adb shell指令“input”輔助調試。
input
Usage: input [<source>] <command> [<arg>...]
The sources are:
? ? ? keyboard
? ? ? mouse
? ? ? joystick
? ? ? touchnavigation
? ? ? touchpad
? ? ? trackball
? ? ? dpad
? ? ? stylus
? ? ? gamepad
? ? ? touchscreen
The commands and default sources are:
? ? ? text <string> (Default: touchscreen)
? ? ? keyevent [--longpress] <key code number or name> ... (Default: keyboard)
? ? ? tap <x> <y> (Default: touchscreen)
? ? ? swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
? ? ? press (Default: trackball)
? ? ? roll <dx> <dy> (Default: trackball)
?填充編輯框命令示例:input text This is a Test?String.
回到主頁面可以使用指令“input keyevent 3”
幾個最常用的KEYCODE如下:
3 --> ?"KEYCODE_HOME"主頁鍵
4 --> ?"KEYCODE_BACK" 返回鍵
19 --> ?"KEYCODE_DPAD_UP" 導航鍵-上
20 --> ?"KEYCODE_DPAD_DOWN"?導航鍵-下
21 --> ?"KEYCODE_DPAD_LEFT"?導航鍵-左
22 --> ?"KEYCODE_DPAD_RIGHT"導航鍵-右
62 --> ?"KEYCODE_SPACE" 空格鍵
66 --> ?"KEYCODE_ENTER" Enter鍵,確認
67 --> ?"KEYCODE_DEL" 回退鍵,刪除
82 --> ?"KEYCODE_MENU"菜單鍵
更多KEYCODE按鍵作用可參照https://blog.csdn.net/feizhixuan46789/article/details/16801429
通過input tap命令模擬觸摸屏幕:input?tap?600?800??在屏幕X坐標600,Y坐標800觸發點擊事件。
input swipe模擬滑動事件,input?swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen),需要將起始的坐標傳入。
input?swipe?600?800?300?800(向左滑動)input?swipe?300?800?600?800 (向右滑動)
adb shell命令“am”也可以做許多操作:
撥打電話:am start -a android.intent.action.CALL -d tel:10086
打開網站:am start -a android.intent.action.VIEW -d http://www.baidu.com
播放音視頻:am start -a android.intent.action.VIEW -d ? "file:///sdcard/Movies/歐若拉-張韶涵.mp4" -t "video/*"?
關機指令:poweroff
抓取后臺應用運行日志信息:logcat -c;logcat
總結
以上是生活随笔為你收集整理的Android系统镜像编译、烧录及调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 7 评测,iQOO 7
- 下一篇: android sina oauth2.