https://github.com/hisano/aosp-research-toolkit
AOSP(Android Open Source Project) Research Toolkit
https://github.com/hisano/aosp-research-toolkit
adb android aosp eclipse
Last synced: 11 months ago
JSON representation
AOSP(Android Open Source Project) Research Toolkit
- Host: GitHub
- URL: https://github.com/hisano/aosp-research-toolkit
- Owner: hisano
- Created: 2016-07-08T14:42:06.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2018-08-12T04:04:38.000Z (almost 8 years ago)
- Last Synced: 2025-08-18T11:53:38.425Z (11 months ago)
- Topics: adb, android, aosp, eclipse
- Language: Java
- Size: 18.6 KB
- Stars: 12
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AOSP (Android Open Source Project) Research Toolkit
AOSP Research Tookitは、AOSPのソースコード調査を支援するツールです。
AOSPのファイル群から、調査用のEclipseプロジェクトを生成するツールを中心に、下記のような作業(一例)をサポートします。
* アプリからフレームワークまで、一気通貫でJavaソースコードを辿る
* Androidバージョンごとの違いを把握する
* 実機を用いてシステムサービスをデバッグする
AOSP Research Tookitの利用方法ですが、下記の二通りの方法があります。
||AOSPから生成されたEclipse・IntelliJプロジェクトを利用|[AOSP](http://source.android.com/source/requirements.html)をビルドした後、AOSP Research Tookitのツールを用いて、Eclipseプロジェクトを生成して利用|
|---|---|---|
|メリット|すぐに調査が可能|自由にバージョンを選んで調査が可能|
|デメリット|用意されたAndroidバージョンでしか調査できない|ソースコードのダウンロード・ビルド等々、事前準備に相当な時間がかかる|
## AOSPから事前生成されたIntelliJプロジェクトを利用
### :black_small_square:準備
Android 2.3から8.0のソースコードを含む下記プロジェクトをダウンロード後、解凍してIntelliJで開いてください。
http://files.hisano.jp/aosp/aosp.zip
### :black_small_square:Eclipseと比べたIntelliJを使うメリット
* Javaのコンパイル時に展開されてしまう定数も正しく検索結果に表示
* Javaのリフレクション経由のコードも検索結果に表示
* 複数のAndroidバージョンをまたがって、クラス・メソッド等の利用場所を検索可能
## AOSPから事前生成されたEclipseプロジェクトを利用
### :black_small_square:準備
下記から、調査したいバージョンのファイル名をクリックしてダウンロードしてください。
> :warning: Nexus端末等での実機デバッグを行うためには、書き込むファームウェアとAndroidバージョンを一致させる必要があります。
> https://source.android.com/source/build-numbers.html
> https://developers.google.com/android/nexus/images
> :warning: 複数のAndroidバージョンを比較したい場合には、複数ファイルをダウンロードしてください。
|Androidバージョン|ファイル|Nexus端末向けファームウェアでのバージョン|
|---|---|---|
|9.0.0 r1|[android-9.0.0_r1.zip](http://files.hisano.jp/aosp/android-9.0.0_r1.zip)|PPR1.180610.009|
|8.0.0 r1|[android-8.0.0_r1.zip](http://files.hisano.jp/aosp/android-8.0.0_r1.zip)|OPR6.170623.010|
|7.1.1 r1|[android-7.1.1_r1.zip](http://files.hisano.jp/aosp/android-7.1.1_r1.zip)|NMF26F|
|7.0.0 r1|[android-7.0.0_r1.zip](http://files.hisano.jp/aosp/android-7.0.0_r1.zip)|NRD90M|
|6.0.0 r1|[android-6.0.0_r1.zip](http://files.hisano.jp/aosp/android-6.0.0_r1.zip)|MRA58K|
|5.1.0 r1|[android-5.1.0_r1.zip](http://files.hisano.jp/aosp/android-5.1.0_r1.zip)|LMY47D|
|5.0.1 r1|[android-5.0.1_r1.zip](http://files.hisano.jp/aosp/android-5.0.1_r1.zip)|LRX22C|
|4.4 r1|[android-4.4_r1.zip](http://files.hisano.jp/aosp/android-4.4_r1.zip)|KRT16M|
|4.3 r1.1|[android-4.3_r1.1.zip](http://files.hisano.jp/aosp/android-4.3_r1.1.zip)|JWR66Y|
|4.2.1 r1|[android-4.2.1_r1.zip](http://files.hisano.jp/aosp/android-4.2.1_r1.zip)|JOP40D|
|4.1.2 r1|[android-4.1.2_r1.zip](http://files.hisano.jp/aosp/android-4.1.2_r1.zip)|JZO54K|
|4.0.3 r1|[android-4.0.3_r1.zip](http://files.hisano.jp/aosp/android-4.0.3_r1.zip)|IML74K|
|2.3.4 r1|[android-2.3.4_r1.zip](http://files.hisano.jp/aosp/android-2.3.4_r1.zip)|GRJ22|
ファイルのダウンロード後、各ファイルごとに下記の手順でEclipseにインポートしてください。
1. Eclipseの[File - Import...]メニューから、"Existing Projects into Workspace"を選択
2. "Select archive file"フィールドに上記でタウンロードしたファイルを指定して"Finish"を押下
### :black_small_square:現在表示しているアクティビティから処理を調査(ソースコード調査の一例)
1. コマンドプロンプト等で"adb shell dumpsys activy top"を実行
2. 上記の出力結果のACTIVITY行から、現在表示しているアクティビティのクラス名を取得
+ 例) Nexus 5 + Android 6で電卓アプリを表示している時には、"ACTIVITY com.google.android.calculator/com.android.calculator2.Calculator f98e77c pid=5041"となるため、"/"以降の"Calculator"がクラス名
3. [Navigate - Open Type...]メニューから"Calculator"クラスを開く
4. Eclipseのソースコードを辿る機能を利用して調査
+ [フィールドやメソッド一覧を表示(Quick Outline機能)](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Quickviews.htm)
+ [クラス階層を表示(Quick Type Hierarchy機能)](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-6.htm)
+ [パンくずリストで同一パッケージのクラスを表示(Show in Breadcrumb機能)](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fref-java-editor-breadcrumb.htm)
+ [メソッド等の処理を表示(Open Declaration機能)](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-Navigate.htm)
+ [上記以外の検索機能](http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftips%2Fjdt_tips.html&anchor=searching_section)
### :black_small_square:特定アプリの起点となるアクティビティやサービスから調査
1. コマンドプロンプト等で"adb shell pm list packages"で、インストールされているアプリのアプリ名を調査
2. コマンドプロンプト等で"adb shell dumpsys package [アプリ名]"を実行して、アクティビティ・サービス・インテントフィルタ等のクラス名を調査
+ AOSPの各アプリのAndroidManifest.xml等や、[apktool](http://ibotpeaches.github.io/Apktool/)での調査も可能
3. 前項の手順でソースコードを調査
### :black_small_square:Nexus端末を用いた実機デバッグ
1. [Nexus端末向けのファームウェア](https://developers.google.com/android/nexus/images)をダウンロード
2. 上記を解凍した後、さらに"image-<端末コード名>-<バージョン>.zip"を解凍してboot.imgを取得
3. boot.imgを[bootimg](http://dark-cyanide-devs.blogspot.jp/2015/01/port-bootimg.html)等でアンパックして、"/default.prop"ファイルの"ro.debuggable=0"を"ro.debuggable=1"に変更した後にリパック
+ アンパック例) bootimg.exe --unpack-bootimg
+ リパック例) bootimg.exe --repack-bootimg
4. 上記でリパックしたboot.imgをfastbootコマンドで書き込み
+ ブートローダへの移行例) adb reboot bootloader
+ 書き込み例) fastboot flash boot boot-new.img
5. 端末を再起動
+ 再起動例) fastboot reboot
6. ADT Plugin for Eclipse又はDDMSの"Devices"ビューでデバッグ対象のプロセスを選択(デバッガ接続用の8700ポートをオープン)
7. [Run - Debug Configurations...]メニューから"Remote Java Application - Debug Selected Process in 'Devices' View with 'android-2.3.4_r1' Project"を選択して"Debug"ボタンを押下
### :black_small_square:リアルタイムにシステムサービスの呼び出されているメソッドを調査
1. ADT Plugin for Eclipse又はDDMSの"Devices"ビューで"system_process"プロセスを選択(デバッガ接続用の8700ポートをオープン)
2. ShowCalledMethodsOfSystemServicesクラスを実行
## [AOSP](http://source.android.com/source/requirements.html)をビルドした後、AOSP Research Tookitのツールを用いて、Eclipseプロジェクトを生成して利用
TBD