xref: /aosp_15_r20/tools/aadevtools/README.md (revision b32fbb6340ee6fe4a25d7b39d84085c084465677)
1*b32fbb63SXin Li# [Android Automotive](https://source.android.com/devices/automotive) Developer Tools
2*b32fbb63SXin Li
3*b32fbb63SXin LiAADevT contains tools for AA device developers to improve their productivity.
4*b32fbb63SXin Li
5*b32fbb63SXin Li* Fully unbundle from Android versions, and use the AOSP trunk based
6*b32fbb63SXin Lidevelopment model.
7*b32fbb63SXin Li
8*b32fbb63SXin Li* Bridge the app ecosystem for [Android Automotive OS](https://developer.android.com/training/cars)
9*b32fbb63SXin Libecause device developers are the key producers for the core apps.
10*b32fbb63SXin Li
11*b32fbb63SXin Li* Leverage [Android app developer tools](https://developer.android.com/studio/intro)
12*b32fbb63SXin Lithat a few million developers use.
13*b32fbb63SXin Li
14*b32fbb63SXin Li[TOC]
15*b32fbb63SXin Li
16*b32fbb63SXin Li## Dev Tools
17*b32fbb63SXin LiThis contains tools designed specifically to simplify the AA device development
18*b32fbb63SXin Liworkflows.
19*b32fbb63SXin Li
20*b32fbb63SXin Li* clone_proj.sh to clone a git project for the unbundled development workflows
21*b32fbb63SXin Liin instead of the whole Android repo.
22*b32fbb63SXin Li
23*b32fbb63SXin Li## Change Reports
24*b32fbb63SXin Li
25*b32fbb63SXin Li### change_report.py
26*b32fbb63SXin Lichange_report.py creates a diff statistic CSV file from 2 versions of a codebase.
27*b32fbb63SXin LiThis is useful when the git commit history is somehow not obtainable. What you
28*b32fbb63SXin Lineed is to get 2 versions of a codebase downloaded on your disk first.
29*b32fbb63SXin Li
30*b32fbb63SXin Li* You can compare specific folders of concern for a quick result, or when
31*b32fbb63SXin Lithere is a code patch change.
32*b32fbb63SXin Li* This skips all symlinks & ignores common repository metadata folders, e.g.
33*b32fbb63SXin Li.git, etc.
34*b32fbb63SXin Li* It can take a long time & generates a large CSV file for the whole Android
35*b32fbb63SXin Licodebase & especially if they are many changes. For example:
36*b32fbb63SXin Li  * Android 11 QPR1 vs QPR2 takes more than 8 min. & generates a 5MB CSV file.
37*b32fbb63SXin Li  * Android 10 QPR3 vs Android 11 QPR2 takes more than 11 min. & generates a
38*b32fbb63SXin Li  95MB CSV file.
39*b32fbb63SXin Li* To reduce time, you should always remove **out**, the build output folder first.
40*b32fbb63SXin Li* For example, to compare Android 11 QPR1 vs QPR2 AOSP codebases on your disk.
41*b32fbb63SXin Li
42*b32fbb63SXin Li```
43*b32fbb63SXin Lipython3 change_report.py --old_dir ~/android/android11-qpr1-release \
44*b32fbb63SXin Li  --new_dir ~/android/android11-qpr2-release \
45*b32fbb63SXin Li  --csv_file ~/change_reports/change_report_android11-qpr1-release_android11-qpr2-release.csv
46*b32fbb63SXin Li```
47*b32fbb63SXin Li
48*b32fbb63SXin Li* An output example: [change_report-new_vs_old_codebase.csv](dev/resource/change_report-new_vs_old_codebase.csv)
49*b32fbb63SXin Liis the change report between **dev/resource/old_codebase** and
50*b32fbb63SXin Li**new_codebase**.
51*b32fbb63SXin Li* The **states** are:
52*b32fbb63SXin Li  * SAME = 0
53*b32fbb63SXin Li  * NEW = 1
54*b32fbb63SXin Li  * REMOVED = 2
55*b32fbb63SXin Li  * MODIFIED = 3
56*b32fbb63SXin Li  * INCOMPARABLE = 4
57*b32fbb63SXin Li
58*b32fbb63SXin Li### sysui_oem_diff.sh
59*b32fbb63SXin Lisysui_oem_diff.sh generates a summary of code changes between 2 revisions.
60*b32fbb63SXin LiWhich gives you a rough idea of changes on files and Lines of Code.
61*b32fbb63SXin Li
62*b32fbb63SXin Li* The report is especailly useful to discuss the pain points on sysui/notif
63*b32fbb63SXin Licustomization with AAOS team.
64*b32fbb63SXin Li* For example, to generate the change report for Android 11 to 10 QPR3: [sysui_gcar_android10-qpr3-release_android11-release.txt](dev/resource/sysui_gcar_android10-qpr3-release_android11-release.txt)
65*b32fbb63SXin Li
66*b32fbb63SXin Li```
67*b32fbb63SXin Li./sysui_oem_diff.sh ~/Android/android11-release remotes/aosp/android10-qpr3-release remotes/aosp/android11-release > sysui_gcar_android10-qpr3-release_android11-release.txt
68*b32fbb63SXin Li```
69*b32fbb63SXin Li
70*b32fbb63SXin Li## System Performance Tuning
71*b32fbb63SXin LiAAOS system performance turning is hard. Here are the tools to make it a bit
72*b32fbb63SXin Lieasier for the device developers.
73*b32fbb63SXin Li
74*b32fbb63SXin Li* time_to_init_disp.sh to measure an app's [Time the Initial Display](https://developer.android.com/topic/performance/vitals/launch-time#time-initial)
75*b32fbb63SXin Li
76*b32fbb63SXin Li## [Android Virtual Device as a Development Platform](avd/README.md)
77