2019年7月21日日曜日

用 Android Studio 對 AOSP 進行除錯


這篇主要是要說
怎麼在 android studio 導入 aosp-based 的專案進行除錯
這篇拿 vamrs 的 rock960 的 android sdk 當範例

TL;DR

前提是這個專案已經 make 完了!!
$ cd ${project_root}
$ source build/envsetup.sh
$ mmm development/tools/idegen/
$ sudo development/tools/idegen/idegen.sh



需要的東西

  1. android studio
  2. 已經 make 過的 aosp-based project
因為這篇的重點是要除錯
所以一定要是 make 完的專案
如果只是要看 aosp 的 source 的話
基本上不需要 make 過的專案!!

執行環境設定

基本上只要能 make aosp-based project 就不需要在額外設定了
如果不行的話
也許可以參考之前寫的這篇:用 Ubuntu 18.04 建立 Android 系統建置環境

產生 idegen.jar

$ source build/envsetup.sh
$ mmm development/tools/idegen/

















產生的 idegen.jar 會在下面這個路徑裡
out/host/linux-x86/framework/idegen.jar
這個東西是用來等等要產生 android studio 用的 project config 用的
所以一定要確定這個東西有產生!!












產生 android.iml 和 android.ipr

有了剛剛產生的 idegen.jar 之後就可以產生 android studio 用的 config 了
而 android.iml 和 android.ipr 就是所謂的 project config 了
這時候只要執行 idegen.sh 就行了
$ development/tools/idegen/idegen.sh










怎麼可能呢...
事情竟然沒有這麼單純…@@
竟然被說沒有權限了!!
看了一下這個路徑還真的被劃了一個X...















加個 sudo 試試看
結果竟然可以了!!
$ sudo development/tools/idegen/idegen.sh





然後輸出的 android.iml 和 android.ipr 會在專案的根目錄下














導入 AOSP

接下來就輪到 android studio 出場了














選 [Open an existing Android Studio project]
然後找到剛剛的 android.ipr




















然後就跳出了個警告@@











然後直接選 [Convert] 就好
它不太會有什麼影響
接著就會看到整個專案被導入了













不對…
好像怪怪的=口=
仔細看了一下 IDE 底下的 log 才發現竟然出錯了@@
他說看起來剛剛產生的 iml 檔好像壞掉了( ´・д・)エッ
Load Settings: Cannot load settings from file 'android.iml'
最後看起來檔案好好的
只是因為 android studio 讀檔太慢了= =
所以不要緊張!!
它自己產生的 bug !!
幫它放置一段時間之後
它自己讀完就好了!!
它最後就會把整個專案讀進來了!!












這時候卻又報了一個警告
External file changes sync may be slow
The current inotify(7) watch limit is too low. More details.


讓我題外話一下
這個時候我突然想到一件事
前陣子在用 visual studio code 的時候
因為導入整個 linux kernel 5.x 全部的 source files
結果太大導致 VSC 吃不完
所以就調整了 fs.inotify 的監看數量















就是因為這個數值可能大了點…
所以換 android studio 抱怨檔案太多速度會變慢了=口=


結果 android studio 同步完整個專案花了超多時間地說OTL
就是 sync + indexing 大概花了 30 分鐘左右的時間
(i7-8559U + 16GB DDR4-3200 + Plextor m9peg 1TB)

設定 JDK

基本上如果只是要看 aosp 的 source 的話其實這個不太重要
不過因為要除錯
所以需要整個 framework 的 source 才行
不然它會去抓一些不是你想看的東西來用
這樣是沒辦法除錯的!!
打開 [File]->[Project Structures]
然後找到左邊 SDKs 的 Tab
按一下上面的 [+] 來新增一個 JDK












然後它會跳出一個對話框讓你選 JDK 的路徑
直接 [OK] 就好






















然後新增加出來的這個 jdk 的 [Name] 隨便取就好
那不太重要
可以認得出它就行了















然後找到下面的 Android API 28 Platform
把 Java SDK 選項換成剛剛新增的 JDK
















接著到左邊的 TAB 中找到 [Project Settings]->[Project]















把 剛剛新增加的 SDK 指定給現在這個 project















在旁邊的 TAB 找到 [Project Settings]->[Modules]
然後找到 [Dependencies]















把它們全部刪掉!!
但是要記得留下一些東西
像下面這張圖這樣















找到右邊的[+]
把 frameworks 和 external 兩個路徑給加進去












在追加路徑的時候
它會出現一個對話框
也是直接按[OK]就好




















加完之後看起來會像下面這張圖這樣















這時候 project tree 會在剛剛那兩個路徑後面顯示[library root]















然後就可以打開 source 下斷點進行除錯了!












大概就是這樣了(´∀`)ノシ

0 件のコメント:

コメントを投稿