diff options
author | Jaewoong Jung <jungjw@google.com> | 2019-07-17 10:21:49 -0700 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2019-07-17 14:32:49 -0700 |
commit | 8aae22e34d4f775a7a62a5878c9ea3829554cef0 (patch) | |
tree | 13d4f870e95f6c83e0f55603736df96ed6a12b7d /java | |
parent | f9a0443a9c66ae9cc1d8466be4ddf120eb884ae6 (diff) | |
download | build_soong-8aae22e34d4f775a7a62a5878c9ea3829554cef0.tar.gz build_soong-8aae22e34d4f775a7a62a5878c9ea3829554cef0.tar.bz2 build_soong-8aae22e34d4f775a7a62a5878c9ea3829554cef0.zip |
Add filename property to android_app_import
Test: app_test.go
Bug: 137218697
Change-Id: If2b20a355bb6e9e8dbcd57347c0e2c6fa041a932
Diffstat (limited to 'java')
-rw-r--r-- | java/androidmk.go | 35 | ||||
-rw-r--r-- | java/app.go | 8 | ||||
-rw-r--r-- | java/app_test.go | 47 |
3 files changed, 69 insertions, 21 deletions
diff --git a/java/androidmk.go b/java/androidmk.go index 90fdd0f7..886c274c 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -594,28 +594,23 @@ func (dstubs *Droidstubs) AndroidMk() android.AndroidMkData { } } -func (app *AndroidAppImport) AndroidMk() android.AndroidMkData { - return android.AndroidMkData{ +func (a *AndroidAppImport) AndroidMkEntries() android.AndroidMkEntries { + return android.AndroidMkEntries{ Class: "APPS", - OutputFile: android.OptionalPathForPath(app.outputFile), + OutputFile: android.OptionalPathForPath(a.outputFile), Include: "$(BUILD_SYSTEM)/soong_app_prebuilt.mk", - Extra: []android.AndroidMkExtraFunc{ - func(w io.Writer, outputFile android.Path) { - if Bool(app.properties.Privileged) { - fmt.Fprintln(w, "LOCAL_PRIVILEGED_MODULE := true") - } - if app.certificate != nil { - fmt.Fprintln(w, "LOCAL_CERTIFICATE :=", app.certificate.Pem.String()) - } else { - fmt.Fprintln(w, "LOCAL_CERTIFICATE := PRESIGNED") - } - if len(app.properties.Overrides) > 0 { - fmt.Fprintln(w, "LOCAL_OVERRIDES_PACKAGES :=", strings.Join(app.properties.Overrides, " ")) - } - if len(app.dexpreopter.builtInstalled) > 0 { - fmt.Fprintln(w, "LOCAL_SOONG_BUILT_INSTALLED :=", app.dexpreopter.builtInstalled) - } - }, + AddCustomEntries: func(name, prefix, moduleDir string, entries *android.AndroidMkEntries) { + entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", Bool(a.properties.Privileged)) + if a.certificate != nil { + entries.SetString("LOCAL_CERTIFICATE", a.certificate.Pem.String()) + } else { + entries.SetString("LOCAL_CERTIFICATE", "PRESIGNED") + } + entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", a.properties.Overrides...) + if len(a.dexpreopter.builtInstalled) > 0 { + entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", a.dexpreopter.builtInstalled) + } + entries.AddStrings("LOCAL_INSTALLED_MODULE_STEM", a.installPath.Rel()) }, } } diff --git a/java/app.go b/java/app.go index 34426585..ce4eb32e 100644 --- a/java/app.go +++ b/java/app.go @@ -736,6 +736,8 @@ type AndroidAppImport struct { dexpreopter usesLibrary usesLibrary + + installPath android.OutputPath } type AndroidAppImportProperties struct { @@ -761,6 +763,9 @@ type AndroidAppImportProperties struct { // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed // from PRODUCT_PACKAGES. Overrides []string + + // Optional name for the installed app. If unspecified, it is derived from the module name. + Filename *string } // Chooses a source APK path to use based on the module and product specs. @@ -913,7 +918,8 @@ func (a *AndroidAppImport) GenerateAndroidBuildActions(ctx android.ModuleContext // TODO: Optionally compress the output apk. - ctx.InstallFile(installDir, a.BaseModuleName()+".apk", a.outputFile) + a.installPath = ctx.InstallFile(installDir, + proptools.StringDefault(a.properties.Filename, a.BaseModuleName()+".apk"), a.outputFile) // TODO: androidmk converter jni libs } diff --git a/java/app_test.go b/java/app_test.go index 32de019f..f21d450c 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -1182,6 +1182,53 @@ func TestAndroidAppImport_DpiVariants(t *testing.T) { } } +func TestAndroidAppImport_Filename(t *testing.T) { + ctx, config := testJava(t, ` + android_app_import { + name: "foo", + apk: "prebuilts/apk/app.apk", + presigned: true, + } + + android_app_import { + name: "bar", + apk: "prebuilts/apk/app.apk", + presigned: true, + filename: "bar_sample.apk" + } + `) + + testCases := []struct { + name string + expected string + }{ + { + name: "foo", + expected: "foo.apk", + }, + { + name: "bar", + expected: "bar_sample.apk", + }, + } + + for _, test := range testCases { + variant := ctx.ModuleForTests(test.name, "android_common") + if variant.MaybeOutput(test.expected).Rule == nil { + t.Errorf("can't find output named %q - all outputs: %v", test.expected, variant.AllOutputs()) + } + + a := variant.Module().(*AndroidAppImport) + expectedValues := []string{test.expected} + actualValues := android.AndroidMkEntriesForTest( + t, config, "", a).EntryMap["LOCAL_INSTALLED_MODULE_STEM"] + if !reflect.DeepEqual(actualValues, expectedValues) { + t.Errorf("Incorrect LOCAL_INSTALLED_MODULE_STEM value '%s', expected '%s'", + actualValues, expectedValues) + } + } +} + func TestStl(t *testing.T) { ctx, _ := testJava(t, cc.GatherRequiredDepsForTest(android.Android)+` cc_library { |