Move odexes of non-system apps into system_other

Previously, the patterns in SYSTEM_OTHER_ODEX_FILTER only matched
subpaths of /system. Broaden this to match /<p> as well as /system/<p>.

Because SYSTEM_OTHER_ODEX_FILTER includes system_ext and product apps,
the immediate effect of this is that the odex and vdex files of
apps on those partitions move to system_other for A/B devices.

This makes the product and system_ext partitions smaller, which
in turn makes OTAs smaller.

Bug: 141707536
Test: soong unit tests
Test: (adb shell dumpsys package com.android.stk &&
       adb shell dumpsys package com.android.quicksearchbox) | grep -i dexopt -A3;
      verify dexpreopt state is 'prebuilt' for both
Test: adb shell find /data/dalvik-cache -name '*QuickSearch*.vdex' | wc -l == 1
Test: adb shell find /data/dalvik-cache -name '*Stk*.vdex' | wc -l == 1

Change-Id: I6e1e6d89c5822d48b522e7e6d77a363ed9f0e05b
This commit is contained in:
Anton Hansson
2019-10-02 18:14:02 +01:00
parent 43ab0bc24a
commit 12b8d427c7
2 changed files with 4 additions and 4 deletions

View File

@@ -581,7 +581,8 @@ func OdexOnSystemOtherByName(name string, dexLocation string, global GlobalConfi
} }
for _, f := range global.PatternsOnSystemOther { for _, f := range global.PatternsOnSystemOther {
if makefileMatch(filepath.Join(SystemPartition, f), dexLocation) { // See comment of SYSTEM_OTHER_ODEX_FILTER for details on the matching.
if makefileMatch("/"+f, dexLocation) || makefileMatch(filepath.Join(SystemPartition, f), dexLocation) {
return true return true
} }
} }

View File

@@ -122,13 +122,12 @@ func TestDexPreoptSystemOther(t *testing.T) {
{module: productModule, expectedPartition: "product"}, {module: productModule, expectedPartition: "product"},
}, },
}, },
// product/app/% only applies to product apps inside the system partition
{ {
patterns: []string{"app/%", "product/app/%"}, patterns: []string{"app/%", "product/app/%"},
moduleTests: []moduleTest{ moduleTests: []moduleTest{
{module: systemModule, expectedPartition: "system_other/system"}, {module: systemModule, expectedPartition: "system_other/system"},
{module: systemProductModule, expectedPartition: "system_other/system/product"}, {module: systemProductModule, expectedPartition: "system_other/system/product"},
{module: productModule, expectedPartition: "product"}, {module: productModule, expectedPartition: "system_other/product"},
}, },
}, },
} }
@@ -148,7 +147,7 @@ func TestDexPreoptSystemOther(t *testing.T) {
} }
if rule.Installs().String() != wantInstalls.String() { if rule.Installs().String() != wantInstalls.String() {
t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) t.Errorf("\npatterns: %v\nwant installs:\n %v\ngot:\n %v", test.patterns, wantInstalls, rule.Installs())
} }
} }
} }