xref: /aosp_15_r20/cts/hostsidetests/dexmetadata/host/README.md (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker## How to update APK files and DM files in the `res` folder
2*b7c941bbSAndroid Build Coastguard Worker
3*b7c941bbSAndroid Build Coastguard WorkerThe source code of the test app is in `../app/SplitApp`. After updating the
4*b7c941bbSAndroid Build Coastguard Workersource code, you need to update the APK files and DM files in the `res` folder.
5*b7c941bbSAndroid Build Coastguard Worker
6*b7c941bbSAndroid Build Coastguard Worker### Updating APK files
7*b7c941bbSAndroid Build Coastguard Worker
8*b7c941bbSAndroid Build Coastguard Worker1. Build the APK from source.
9*b7c941bbSAndroid Build Coastguard Worker
10*b7c941bbSAndroid Build Coastguard Worker    ```
11*b7c941bbSAndroid Build Coastguard Worker    m CtsDexMetadataSplitApp
12*b7c941bbSAndroid Build Coastguard Worker    ```
13*b7c941bbSAndroid Build Coastguard Worker
14*b7c941bbSAndroid Build Coastguard Worker2. Copy the APK to the `res` folder.
15*b7c941bbSAndroid Build Coastguard Worker
16*b7c941bbSAndroid Build Coastguard Worker    ```
17*b7c941bbSAndroid Build Coastguard Worker    cp \
18*b7c941bbSAndroid Build Coastguard Worker      $ANDROID_BUILD_TOP/out/host/linux-x86/cts/android-cts/testcases/CtsDexMetadataSplitApp/x86_64/CtsDexMetadataSplitApp.apk \
19*b7c941bbSAndroid Build Coastguard Worker      res/CtsDexMetadataSplitApp.apk
20*b7c941bbSAndroid Build Coastguard Worker    ```
21*b7c941bbSAndroid Build Coastguard Worker
22*b7c941bbSAndroid Build Coastguard Worker    Note: You may need to replace `x86_64` with a different ISA, depending on
23*b7c941bbSAndroid Build Coastguard Worker    the product that you `lunch`-ed.
24*b7c941bbSAndroid Build Coastguard Worker
25*b7c941bbSAndroid Build Coastguard Worker3. Repeat the steps above for the split APK (`CtsDexMetadataSplitAppFeatureA`).
26*b7c941bbSAndroid Build Coastguard Worker
27*b7c941bbSAndroid Build Coastguard Worker### Updating DM files
28*b7c941bbSAndroid Build Coastguard Worker
29*b7c941bbSAndroid Build Coastguard WorkerThe DM files contain profiles, whose headers have the dex checksums that need to
30*b7c941bbSAndroid Build Coastguard Workermatch the dex files in the APKs. Therefore, after updating the APKs, you must
31*b7c941bbSAndroid Build Coastguard Workerupdate the DM files.
32*b7c941bbSAndroid Build Coastguard Worker
33*b7c941bbSAndroid Build Coastguard Worker1. Create a binary profile from the text profile.
34*b7c941bbSAndroid Build Coastguard Worker
35*b7c941bbSAndroid Build Coastguard Worker    ```
36*b7c941bbSAndroid Build Coastguard Worker    profman \
37*b7c941bbSAndroid Build Coastguard Worker      --create-profile-from=res/CtsDexMetadataSplitApp.prof.txt \
38*b7c941bbSAndroid Build Coastguard Worker      --apk=res/CtsDexMetadataSplitApp.apk \
39*b7c941bbSAndroid Build Coastguard Worker      --dex-location=base.apk \
40*b7c941bbSAndroid Build Coastguard Worker      --reference-profile-file=/tmp/primary.prof \
41*b7c941bbSAndroid Build Coastguard Worker      --output-profile-type=app
42*b7c941bbSAndroid Build Coastguard Worker    ```
43*b7c941bbSAndroid Build Coastguard Worker
44*b7c941bbSAndroid Build Coastguard Worker    Note: `--dex-location` must be set to `base.apk`, regardless of the actual
45*b7c941bbSAndroid Build Coastguard Worker    APK name.
46*b7c941bbSAndroid Build Coastguard Worker
47*b7c941bbSAndroid Build Coastguard Worker    Note: `--reference-profile-file` is the output. You can specify a different
48*b7c941bbSAndroid Build Coastguard Worker    output location, but the filename must be `primary.prof`.
49*b7c941bbSAndroid Build Coastguard Worker
50*b7c941bbSAndroid Build Coastguard Worker    Tip: If `profman` is not found, run `m profman`.
51*b7c941bbSAndroid Build Coastguard Worker
52*b7c941bbSAndroid Build Coastguard Worker2. Delete the existing DM file and create the DM file from the binary profile.
53*b7c941bbSAndroid Build Coastguard Worker
54*b7c941bbSAndroid Build Coastguard Worker    ```
55*b7c941bbSAndroid Build Coastguard Worker    rm res/CtsDexMetadataSplitApp.dm
56*b7c941bbSAndroid Build Coastguard Worker    zip -j res/CtsDexMetadataSplitApp.dm /tmp/primary.prof
57*b7c941bbSAndroid Build Coastguard Worker    ```
58*b7c941bbSAndroid Build Coastguard Worker
59*b7c941bbSAndroid Build Coastguard Worker3. Repeat the steps above for the split APK (`CtsDexMetadataSplitAppFeatureA`).
60