diff options
author | Colin Cross <ccross@android.com> | 2018-04-18 22:22:25 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-04-18 22:22:25 +0000 |
commit | 59bcf6e631fe01254243e48877f709ccc58cefad (patch) | |
tree | 6672d6552d34f4b48c8f3f5db60247075468afd4 /java | |
parent | 5ddf2922684874adcb468f4d90d40842b6bf6bf3 (diff) | |
parent | d09b0b653b615c322266fa2a41ecf0f0066bc93d (diff) | |
download | build_soong-59bcf6e631fe01254243e48877f709ccc58cefad.tar.gz build_soong-59bcf6e631fe01254243e48877f709ccc58cefad.tar.bz2 build_soong-59bcf6e631fe01254243e48877f709ccc58cefad.zip |
Merge "Fix aapt2 --min-sdk-version after finalized SDK"
Diffstat (limited to 'java')
-rw-r--r-- | java/aar.go | 2 | ||||
-rw-r--r-- | java/app_test.go | 95 |
2 files changed, 96 insertions, 1 deletions
diff --git a/java/aar.go b/java/aar.go index 57c752c6..8b5b85e3 100644 --- a/java/aar.go +++ b/java/aar.go @@ -134,7 +134,7 @@ func (a *aapt) aapt2Flags(ctx android.ModuleContext, sdkVersion string) (flags [ // SDK version flags switch sdkVersion { case "", "current", "system_current", "test_current": - sdkVersion = proptools.NinjaEscape([]string{ctx.Config().AppsDefaultVersionName()})[0] + sdkVersion = proptools.NinjaEscape([]string{ctx.Config().DefaultAppTargetSdk()})[0] } linkFlags = append(linkFlags, "--min-sdk-version "+sdkVersion) diff --git a/java/app_test.go b/java/app_test.go index 7a617713..6770119e 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -16,8 +16,10 @@ package java import ( "android/soong/android" + "fmt" "reflect" "sort" + "strings" "testing" ) @@ -240,3 +242,96 @@ func TestEnforceRRO(t *testing.T) { }) } } + +func TestAppSdkVersion(t *testing.T) { + testCases := []struct { + name string + sdkVersion string + platformSdkInt int + platformSdkCodename string + platformSdkFinal bool + expectedMinSdkVersion string + }{ + { + name: "current final SDK", + sdkVersion: "current", + platformSdkInt: 27, + platformSdkCodename: "REL", + platformSdkFinal: true, + expectedMinSdkVersion: "27", + }, + { + name: "current non-final SDK", + sdkVersion: "current", + platformSdkInt: 27, + platformSdkCodename: "OMR1", + platformSdkFinal: false, + expectedMinSdkVersion: "OMR1", + }, + { + name: "default final SDK", + sdkVersion: "", + platformSdkInt: 27, + platformSdkCodename: "REL", + platformSdkFinal: true, + expectedMinSdkVersion: "27", + }, + { + name: "default non-final SDK", + sdkVersion: "", + platformSdkInt: 27, + platformSdkCodename: "OMR1", + platformSdkFinal: false, + expectedMinSdkVersion: "OMR1", + }, + { + name: "14", + sdkVersion: "14", + expectedMinSdkVersion: "14", + }, + } + + for _, moduleType := range []string{"android_app", "android_library"} { + for _, test := range testCases { + t.Run(moduleType+" "+test.name, func(t *testing.T) { + bp := fmt.Sprintf(`%s { + name: "foo", + srcs: ["a.java"], + sdk_version: "%s", + }`, moduleType, test.sdkVersion) + + config := testConfig(nil) + config.TestProductVariables.Platform_sdk_version = &test.platformSdkInt + config.TestProductVariables.Platform_sdk_codename = &test.platformSdkCodename + config.TestProductVariables.Platform_sdk_final = &test.platformSdkFinal + + ctx := testAppContext(config, bp, nil) + + run(t, ctx, config) + + foo := ctx.ModuleForTests("foo", "android_common") + link := foo.Output("package-res.apk") + linkFlags := strings.Split(link.Args["flags"], " ") + min := android.IndexList("--min-sdk-version", linkFlags) + target := android.IndexList("--target-sdk-version", linkFlags) + + if min == -1 || target == -1 || min == len(linkFlags)-1 || target == len(linkFlags)-1 { + t.Fatalf("missing --min-sdk-version or --target-sdk-version in link flags: %q", linkFlags) + } + + gotMinSdkVersion := linkFlags[min+1] + gotTargetSdkVersion := linkFlags[target+1] + + if gotMinSdkVersion != test.expectedMinSdkVersion { + t.Errorf("incorrect --min-sdk-version, expected %q got %q", + test.expectedMinSdkVersion, gotMinSdkVersion) + } + + if gotTargetSdkVersion != test.expectedMinSdkVersion { + t.Errorf("incorrect --target-sdk-version, expected %q got %q", + test.expectedMinSdkVersion, gotTargetSdkVersion) + } + }) + } + } +} |