adb,全稱 Android Debug Bridge,是 Android 的命令行調試工具,可以完成多種功能,如跟蹤系統日志,上傳下載文件,安裝應用等。
支持兩種ADB鏈接方式:USB和網絡連接。
USB方式
-
在開發板上進入選項->開發人員選項,勾上 “USB 調試” 選項
-
AIO-3399JD4用雙公頭usb數據線連接設備USB3.0口和主機
-
host/device模式切換
-
設置->USB->連接到PC
-
網絡方式
-
網絡ADB
-
查看3399的IP地址,PC端通過網絡訪問。例:
-
首先參照安裝 RK USB 驅動一節安裝好驅動。然后到 http://adbshell.com/download/download-adb-for-windows.html 下載 adb.zip,解壓到C:\adb以方便調用。 打開命令行窗口,輸入:
如果一切正常,就可以進入adbshell,在設備上面運行命令。
-
安裝 adb 工具:
-
加入設備標識:
-
加入 udev 規則:
-
重新插拔 USB 線,或運行以下命令,讓 udev 規則生效:
-
重新啟動 adb 服務器
連接管理
列出所有連接設備及其序列號
如果有多個連接設備,則需要使用序列號來區分:
多設備下連接指定設備
可以通過網絡來連接 adb:
獲取系統日志 adb logcat
-
用法
-
示例
運行命令 adb shell
獲取詳細運行信息 adb bugreport
adbbugreport用于錯誤報告,里面包含大量有用的信息。
-
示例
root 權限
如果 TARGET_BUILD_VARIANT 使用的是 userdebug 模式,要獲得 root 權限,需要先運行:
讓 adb 的設備端切換到 root 權限模式,這樣 adb remount 等需要 root 權限的命令才會成功。
安裝應用 adb install
-
用法:
選項包括:
-
示例:
如果安裝成功,工具會返回成功提示 “Success”;失敗的話,一般是以下幾種情況:
-
INSTALL_FAILED_ALREADY_EXISTS: 此時需要用 -r 參數來重新安裝。
-
INSTALL_FAILED_SIGNATURE_ERROR: 應用的簽名不一致,可能是發布版和調試版簽名不同所致。如果確認 APK 文件簽名正常,可以用 adb uninstall 命令先卸載舊的應用,然后再安裝。
-
INSTALL_FAILED_INSUFFICIENT_STORAGE: 存儲空間不足,需要檢查設備存儲情況。
卸載應用 adb uninstall
-
用法:
-
示例:
應用包名稱可以用以下命令列出:
運行結果是:
前面是 apk 文件,后面則是對應的包名稱。
命令行幫助信息 adb help
編譯 Android 對機器的配置要求較高:
官方推薦 Ubuntu 14.04 操作系統,經測試,Ubuntu 12.04 也可以編譯運行成功,只需要滿足 http://source.android.com/source/building.html 里的軟硬件配置即可。編譯環境的初始化可參考 http://source.android.com/source/initializing.html 。
-
安裝 OpenJDK 8:
提示:安裝 openjdk-8-jdk,會更改 JDK 的默認鏈接,這時可用:
來切換 JDK 版本。SDK 在找不到操作系統默認 JDK 的時候會使用內部設定的 JDK 路徑,因此,為了讓同一臺機器可以編譯 Android 5.1 及之前的版本,去掉鏈接更方便:
-
Ubuntu 12.04 軟件包安裝:
-
Ubuntu 14.04 軟件包安裝:
Android SDK 源碼包比較大,可以通過如下方式獲取Android7.1源碼包:[下載鏈接]
下載完成后先驗證一下 MD5 碼:
確認無誤后,就可以解壓:
注意:解壓后務必要先更新下遠程倉庫。 以下為從 gitlab 處更新的方法:
HDMI顯示編譯
HDMI+lvds編譯
手動編譯AIO-3399JD4
編譯前執行如下命令配置環境變量:
-
編譯kernel:
-
編譯uboot:
-
編譯android:
編譯完可以用Firefly官方的腳本打包成統一固件,執行如下命令:
打包完成后將在rockdev/Image-rk3399_firefly_aiojd4_box/下生成統一固件:update.img
在 Windows 下打包統一固件 update.img 也很簡單,將編譯生成的文件拷貝到 AndroidTool 的 rockdev\Image 目錄中,然后運行 rockdev 目錄下的 mkupdate.bat 批處理文件即可創建 update.img 并存放到 rockdev\Image 目錄里。
編譯的時候執行 ./mkimage.sh 會重新打包 boot.img 和 system.img, 并將其它相關的映像文件拷貝到目錄 rockdev/Image-rk3399_firefly_xxx/ 中。以下列出一般固件用到的映像文件:
-
boot.img :Android 的初始文件映像,負責初始化并加載 system 分區。
-
kernel.img :內核映像。
-
misc.img :misc 分區映像,負責啟動模式切換和急救模式的參數傳遞。
-
parameter.txt :emmc的分區信息
-
recovery.img :急救模式映像。
-
resource.img :資源映像,內含開機圖片和內核的設備樹信息。
-
system.img :Android 的 system 分區映像,ext4 文件系統格式。
-
trust.img :休眠喚醒相關的文件
-
rk3399_loader_v1.08.106.bin :Loader文件
-
uboot.img :uboot文件
請參照 如何升級固件 一文來燒寫分區映像文件。
如果使用的是 Windows 系統,將上述映像文件拷貝到 AndroidTool (Windows 下的固件升級工具)的 rockdev\Image 目錄中,之后參照升級文檔燒寫分區映像即可,這樣的好處是使用默認配置即可,不用修改文件的路徑。
update.img 方便固件的發布,供終端用戶升級系統使用。一般開發時使用分區映像比較方便。
定制 Android 固件,有兩種方法:
-
改源碼,然后編譯生成固件。
-
在現有固件的基礎上進行裁剪。
前一種方法,可以從各個層面去定制 Android,自由度大,但對編譯環境和技術要求比較高,參見《編譯 Android 固件》一文。現在介紹后一種方法,分為解包、定制和打包三個階段。主機操作系統為 Linux,采用的工具為開源軟件。
統一固件 release_update.img,內含啟動加載器 loader.img 和真正的固件數據 update.img
update.img 是個復合文件,內含多個文件,由 package-file 描述。一個典型的 package-file 為:
-
package-file
-
update.img 的打包說明文件,update.img 里也含有一份 package-file。
-
Image/MiniLoaderAll.bin
-
啟動加載器,即 bootloader。
-
Image/parameter.txt
-
參數文件,可以設定內核啟動參數,里面有重要的分區信息。
-
Image/trust.img,trust.img 是U-Boot作為二級loader 的打包。
-
Image/misc.img
-
misc 分區的映像,用來控制 Android 是正常啟動,還是進入急救模式(Recovery Mode)。
-
Image/kernel.img
-
Android 內核。
-
Image/resource.img
-
資源映像,內有內核開機圖片和內核設備樹信息(Device Tree Blob)。
-
Image/boot.img
-
Android 內核的內存啟動盤(initrd),是內核啟動后最先加載的根文件系統,包含重要的初始化動作,一般不需要改動。
-
Image/recovery.img
-
Android 急救模式的映像,內含內核和急救模式的根文件系統。
-
Image/system.img
-
對應于 Android 的 /system 分區,是以下的定制對象。
解包,就是提取 release_update.img 里的 update.img, 然后解壓出內含 package-file 所聲明的多個文件。打包,則是個逆過程,將 package-file 將所列的多個文件合成 update.img,加進 loader.img,最終生成 release_update.img 。
-
解壓 release_update.img
-
解壓 update.img
-
查看 update 目錄下的文件樹
這樣,固件就解包成功了,下面就開始定制吧。
定制 system.img
system.img 是個 ext4 文件系統格式的映像文件,可以直接掛載到系統進行修改:
注意,該 system.img 的剩余空間基本為 0, 如果不是刪除文件,就需要對 system.img 進行擴容,并根據最后的文件大小,相應地調整 parameter 文件里的分區設置。以下是如何擴展空間的示例,在擴展前,先運行 mount 來查看系統掛載情況,確保 system.img 已經卸載:
打包
首先要檢查一下 system.img 的大小,對照 parameter 文件的分區情況(可參考文檔Parameter 文件格式,作必要的大小調整。例如,parameter.txt 文件里的 system 分區大小,可以找到 CMDLINE 一行,然后找到 system 字符串:
@ 前面就是分區的大小,單位是 512 字節,這樣該 system 分區的大小就是:
只要 system.img 的大小不超過 1024M,parameter 文件就不用更改。如果分區不用更改,可以直接用燒寫工具將新的 system.img 燒寫到開發板的 system 分區上做試驗。否則,需要制作新固件并燒寫后再行測試。以下是打包成統一固件 update.img 所需要的步驟:
-
合成 update.img :
-
合成 release_update.img :
release_update_new.img 即為最終生成的可燒寫的統一固件文件。
固件的版本在哪設置
在 parameter 文件中找到下行并修改即可,注意版本號為數字,中間兩個點號不能省略。
-
嵌入式主板
+關注
關注
7文章
6095瀏覽量
36108 -
安卓
+關注
關注
5文章
2142瀏覽量
58235 -
Firefly
+關注
關注
2文章
541瀏覽量
7356
發布評論請先 登錄
fireflyCORE-3399PRO主板JD4--Android開發
fireflyCORE-3399主板JD4--FAQs方案

fireflyCORE-3399主板JD4產品簡介
Core 3399 JD4工具upgrade tool for Android8.1文件包

Core 3399 JD4工具AndroidTool Release v2.38文件包

Core 3399 JD4工具AndroidTool Release v2.54文件包

Core 3399 JD4工具AndroidTool Release v2.63文件包

Core 3399 JD4工具AndroidTool Release v2.71文件包

Core 3399 JD4 V2工具AndroidTool Release v2.38

Core 3399 JD4 V2工具AndroidTool Release v2.54

Core 3399 JD4 V2工具AndroidTool Release v2.63

Core 3399 JD4 V2工具AndroidTool Release v2.65

Core 3399 JD4 V2工具AndroidTool Release v2.71

評論