Google Pixel5 携帯電話を使用して AOSP をデバッグするための詳細なガイド (コードのダウンロード、コンパイル、フラッシュ、デバッグ)


AOSP ソース コードのデバッグを容易にするために、1,000 元以上を費やして新しい Pixel5 携帯電話を pdd で 99 元で購入し、それ以来、最終的に実際の電話でコードをデバッグできるようになりました。

コードのダウンロード

AOSPコードのダウンロードについては、このコラムで紹介したのでここでは詳しく説明しませんが、まだ見ていない方は以前紹介した記事を読んでみてください。
ここで説明したいのは、pixel5に対応したコードのダウンロード方法など、携帯電話の機種に応じたコードをダウンロードする方法です。
次のリンクAOSP ソース コード タグを開いてビルドすると、次の内容が表示されます。
ここに画像の説明を挿入します

サポートされているデバイス列は、このブランチのコードでサポートされている携帯電話モデルを示します。タグ列は、コードをダウンロードするときに指定した TAG を指します。ビルド ID 列は、Google のクローズド ソース リソースをダウンロードするために使用される ID です。完全なイメージをコンパイルする場合は、オープン ソースの aosp に加えて、ドライバー、vendor.img など、オープン ソースではない部分も含まれるため、このビルド ID を通じて対応するリソースをダウンロードする必要があります。 aosp ソース コード ディレクトリに配置し、解凍してコンパイルすると、最終的に完全なイメージが生成されます。

Pixel5 デバイスなので、android-13.0.0_r40 がサポートされていることがわかります。まず、次のコマンドを使用して、対応する aosp をダウンロードします。

mkdir android-13.0.0_r40
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r40
repo sync

次に、次のページに移動してドライバー バイナリをダウンロードします。Nexusおよび Pixel デバイスに対応するドライバー バイナリ ファイル
android-13.0.0_r40 のビルド ID は TQ2A.230405.003.B2 であるため、ビルド ID が TQ2A である Pixel5 を検索します。 230405.003.B2. できます。
ここに画像の説明を挿入します

上の図でわかるように、ハードウェア関連イメージ用に 2 つのファイルをダウンロードする必要があります。1 つは Google から、もう 1 つは Qualcomm からです。Pixel 5 は Qualcomm チップを使用しているため、いくつかの Qualcomm イメージが必要です。2 つの青いリンクをクリックしてファイルをダウンロードします。ダウンロード後、解凍して 2 つのシェル スクリプトを見つけます。次のように、aosp ルート ディレクトリに配置します。

ここに画像の説明を挿入します
画像でマークされているのは、解凍されたシェル スクリプトです。これは別個に実行されます。最初にいくつかの契約条項が出力されます。最後に進むときは、I ACCEPT と入力する必要があります。その後、解凍が開始されます。解凍が完了したら、コードをコンパイルできます。

コードのコンパイル

このパートではコンパイル時にランチオプションを選択する方法を主に紹介します. 実際は非常に簡単です. 次のページを開いてデバイスビルドを選択します
ここに画像の説明を挿入します
. 各モデルのコンパイル構成がここにリストされています. たとえば,Pixel5のコードをコンパイルする場合,次のコマンドを使用します。

source build/envsetup.sh
lunch aosp_redfin-userdebug
m -j8

マシンをフラッシュする

フラッシュするには、fastboot および adb ツールの使用が必要ですが、Android Studio がインストールされている場合は、Sdk 内のツールをシステムの bin ディレクトリに直接コピーするという怠惰な方法があります。
ここに画像の説明を挿入します
フラッシュする前に、まず USB デバッグをオンにしてから、次のコマンドを実行してフラッシュを開始する必要があります。
aosp ルート ディレクトリに存在する必要があることに注意してください。ランチがまだ実行されていない場合は、最初に実行する必要があります。

source build/envsetup.sh
lunch aosp_redfin-userdebug

次に点滅を開始します

adb reboot bootloader
fastboot flashing unlock
这个时候手机上会有选项,根据说明按下音量键切换到允许unlock,再按电源键确认即可。

最後に実行された

fastboot flashall -w
-w会清除data分区,如果不想的话也可以不加-w选项

次に、フラッシュが完了するまで待つと、電話機が自動的に再起動します。次は、フラッシュが成功した場合の出力です。

zzh@ubuntu:~/work/android/aosp/android-13.0.0_r40$ fastboot flashall
--------------------------------------------
Checking 'product'                                 OKAY [  0.069s]
Setting current slot to 'b'                        OKAY [  0.087s]
Sending 'boot_b' (98304 KB)                        OKAY [  2.720s]
Writing 'boot_b'                                   OKAY [  0.308s]
Sending 'dtbo_b' (16384 KB)                        OKAY [  0.540s]
Writing 'dtbo_b'                                   OKAY [  0.112s]
Sending 'vbmeta_b' (8 KB)                          OKAY [  0.140s]
Writing 'vbmeta_b'                                 OKAY [  0.079s]
Sending 'vbmeta_system_b' (4 KB)                   OKAY [  0.140s]
Writing 'vbmeta_system_b'                          OKAY [  0.079s]
Sending 'vendor_boot_b' (98304 KB)                 OKAY [  2.680s]
Writing 'vendor_boot_b'                            OKAY [  0.308s]
Rebooting into fastboot                            OKAY [  0.070s]
< waiting for any device >
Sending 'super' (4 KB)                             OKAY [  0.001s]
Updating super partition                           OKAY [  0.031s]
Resizing 'product_b'                               OKAY [  0.006s]
Resizing 'system_b'                                OKAY [  0.006s]
Resizing 'system_ext_b'                            OKAY [  0.006s]
Resizing 'system_a'                                OKAY [  0.006s]
Resizing 'vendor_b'                                OKAY [  0.006s]
Resizing 'vendor_a'                                OKAY [  0.006s]
Invalid sparse file format at header magic
Resizing 'product_b'                               OKAY [  0.006s]
Sending sparse 'product_b' 1/2 (262140 KB)         OKAY [  6.954s]
Writing 'product_b'                                OKAY [  0.710s]
Sending sparse 'product_b' 2/2 (20168 KB)          OKAY [  0.547s]
Writing 'product_b'                                OKAY [  0.090s]
Invalid sparse file format at header magic
Resizing 'system_b'                                OKAY [  0.006s]
Sending sparse 'system_b' 1/4 (262112 KB)          OKAY [  6.951s]
Writing 'system_b'                                 OKAY [  0.697s]
Sending sparse 'system_b' 2/4 (262116 KB)          OKAY [  6.912s]
Writing 'system_b'                                 OKAY [  0.701s]
Sending sparse 'system_b' 3/4 (262140 KB)          OKAY [  6.935s]
Writing 'system_b'                                 OKAY [  0.679s]
Sending sparse 'system_b' 4/4 (64236 KB)           OKAY [  1.697s]
Writing 'system_b'                                 OKAY [  0.206s]
Resizing 'system_ext_b'                            OKAY [  0.006s]
Sending 'system_ext_b' (191812 KB)                 OKAY [  4.977s]
Writing 'system_ext_b'                             OKAY [  0.526s]
Resizing 'system_a'                                OKAY [  0.005s]
Sending 'system_a' (26672 KB)                      OKAY [  0.699s]
Writing 'system_a'                                 OKAY [  0.091s]
Invalid sparse file format at header magic
Resizing 'vendor_b'                                OKAY [  0.010s]
Sending sparse 'vendor_b' 1/3 (262092 KB)          OKAY [  6.941s]
Writing 'vendor_b'                                 OKAY [  0.731s]
Sending sparse 'vendor_b' 2/3 (262116 KB)          OKAY [  6.881s]
Writing 'vendor_b'                                 OKAY [  0.692s]
Sending sparse 'vendor_b' 3/3 (239980 KB)          OKAY [  6.379s]
Writing 'vendor_b'                                 OKAY [  0.627s]
Rebooting                                          OKAY [  0.000s]
Finished. Total time: 88.360s

デバッグ

userdebug バージョンをコンパイルしているので、後でデバッグするときにそれをプッシュできます。最初に実行する必要がある

adb root
adb remount
adb reboot

Launcher が検証を開始するときにログの行を追加しましょう。
ここに画像の説明を挿入します

source build/envsetup.sh
lunch aosp_redfin-userdebug
make Launcher3 

ここに画像の説明を挿入します
コンパイルした Launcher3 をデバイスにプッシュして再起動します

adb root
adb remount
// 在测试时发现已经被安装的apk重启后不会再扫描,需要删除data下的文件才可以,所以我直接install apk验证了。
// 当然其他文件,比如so库,jar包,xml文件等还是可以push验证的。
// adb push out/target/product/redfin/system_ext/priv-app/Launcher3/ /system_ext/priv-app/
adb install -r  out/target/product/redfin/system_ext/priv-app/Launcher3/Launcher3.apk
// 此时Launcher会重启,可以看到我们添加的日志打印出来了。
07-26 22:08:53.441  5855  5855 D zzh     : Launcher3 Start...

不十分

購入したデバイス、またはインターネットからダウンロードした対応するデバイスのイメージには、gms サービスとアプリケーションが含まれていますが、aosp を自分でコンパイルした場合は含まれていません。必要な場合は、gms サービスとアプリケーションを組み込む必要があります。アプリケーションは自分で作成します。
もう 1 つは、システム アプリケーションがネイティブ システムとは異なることです。aosp によってコンパイルされたアプリケーションは比較的シンプルですが、ネイティブ システムによってコンパイルされたアプリケーションはより美しいです。ただし、コードのデバッグに使用するため、これは問題ではなく、時間があるときにカスタマイズできます。

おすすめ

転載: blog.csdn.net/weixin_41678668/article/details/131947829