Google Pixel5 휴대폰을 사용하여 AOSP 디버깅(코드 다운로드, 컴파일, 플래시, 디버그)에 대한 자세한 가이드


AOSP 소스 코드 디버깅을 용이하게 하기 위해 pdd에서 1,000위안 이상을 들여 새 pixel5 휴대폰을 99위안으로 구입했고, 그때부터 마침내 실제 휴대폰에서 코드를 디버깅할 수 있게 되었습니다.

코드 다운로드

AOSP 코드 다운로드에 대해서는 이번 칼럼에서 소개하였으므로 여기서는 자세히 다루지 않겠으며, 아직 못 보신 분들은 앞서 소개한 글을 읽어보시면 됩니다.
여기서 설명하고 싶은 것은 pixel5에 해당하는 코드를 다운로드하는 방법 등 아래와 같이 휴대폰 모델에 해당하는 코드를 다운로드하는 것입니다.
다음 AOSP 소스 코드 태그 링크를 열고 빌드하여 다음 내용을 확인하세요.
여기에 이미지 설명을 삽입하세요.

지원 기기 열은 이 브랜치의 코드가 지원하는 휴대폰 모델을 나타내고, 태그 열은 코드 다운로드 시 지정한 TAG를 나타내며, 빌드 ID 열은 구글의 비공개 소스 리소스를 다운로드하는 데 사용되는 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개의 파일을 다운로드 받아야 합니다. Pixel 5는 Qualcomm 칩을 사용하기 때문에 일부 Qualcomm 이미지가 필요합니다. 두 개의 파란색 링크를 클릭하여 파일을 다운로드하세요. 다운로드 후 압축을 풀고 두 개의 쉘 스크립트를 찾으십시오. 다음과 같이 aosp 루트 디렉터리에 넣습니다.

여기에 이미지 설명을 삽입하세요.
그림에 표시된 것은 별도로 실행되는 압축 해제된 쉘 스크립트이며, 처음에는 일부 계약 조항이 인쇄될 것입니다. 마지막으로 넘어가면 I ACCEPT를 입력해야 압축 해제가 시작됩니다. 압축 해제가 완료되면 코드를 컴파일할 수 있습니다.

코드 컴파일

이 부분에서는 주로 컴파일 중 lunch 옵션을 선택하는 방법을 소개합니다. 실제로는 매우 간단합니다. 다음 페이지를 열고 장치 빌드를 선택합니다
여기에 이미지 설명을 삽입하세요.
. 여기에 각 모델의 컴파일 구성이 나열됩니다. 예를 들어 pixel5의 코드를 컴파일하면, 다음 명령을 사용하십시오.

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

기계를 플래시하세요

플래싱을 하려면 fastboot 및 adb 도구를 사용해야 합니다. 제가 사용하는 게으른 방법은 Android Studio가 설치된 경우 SDK의 도구를 시스템의 bin 디렉터리에 직접 복사하는 것입니다.
여기에 이미지 설명을 삽입하세요.
플래시하기 전에 먼저 USB 디버깅을 켜고 다음 명령을 실행하여 플래시를 시작해야 합니다.
aosp 루트 디렉터리에 있어야 하며, 이전에 lunch가 수행되지 않은 경우 먼저 실행해야 합니다.

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를 직접 컴파일하면 없어집니다. 직접 신청하세요.
다른 하나는 시스템 애플리케이션이 네이티브 시스템과 다르기 때문에 aosp로 컴파일한 애플리케이션은 비교적 단순한 반면 네이티브 시스템으로 컴파일한 애플리케이션은 더 아름답습니다. 다만, 코드 디버깅에 사용되는 것이므로 상관없으며, 시간이 있을 때 커스터마이징할 수 있습니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_41678668/article/details/131947829
Recomendado
Clasificación