diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/androidmk.go | 4 | ||||
-rw-r--r-- | java/app_set.go | 27 | ||||
-rw-r--r-- | java/app_set_test.go | 22 | ||||
-rw-r--r-- | java/builder.go | 4 |
4 files changed, 36 insertions, 21 deletions
diff --git a/java/androidmk.go b/java/androidmk.go index 4c115d58c..272a4fd36 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -696,12 +696,12 @@ func (apkSet *AndroidAppSet) AndroidMkEntries() []android.AndroidMkEntries { return []android.AndroidMkEntries{ android.AndroidMkEntries{ Class: "APPS", - OutputFile: android.OptionalPathForPath(apkSet.packedOutput), + OutputFile: android.OptionalPathForPath(apkSet.primaryOutput), Include: "$(BUILD_SYSTEM)/soong_android_app_set.mk", ExtraEntries: []android.AndroidMkExtraEntriesFunc{ func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) { entries.SetBoolIfTrue("LOCAL_PRIVILEGED_MODULE", apkSet.Privileged()) - entries.SetString("LOCAL_APK_SET_INSTALL_FILE", apkSet.InstallFile()) + entries.SetPath("LOCAL_APK_SET_INSTALL_FILE", apkSet.PackedAdditionalOutputs()) entries.SetPath("LOCAL_APKCERTS_FILE", apkSet.apkcertsFile) entries.AddStrings("LOCAL_OVERRIDES_PACKAGES", apkSet.properties.Overrides...) }, diff --git a/java/app_set.go b/java/app_set.go index 6b25638da..2e9a4abdc 100644 --- a/java/app_set.go +++ b/java/app_set.go @@ -55,10 +55,10 @@ type AndroidAppSet struct { android.DefaultableModuleBase prebuilt android.Prebuilt - properties AndroidAppSetProperties - packedOutput android.WritablePath - installFile string - apkcertsFile android.ModuleOutPath + properties AndroidAppSetProperties + packedOutput android.WritablePath + primaryOutput android.WritablePath + apkcertsFile android.ModuleOutPath } func (as *AndroidAppSet) Name() string { @@ -78,11 +78,11 @@ func (as *AndroidAppSet) Privileged() bool { } func (as *AndroidAppSet) OutputFile() android.Path { - return as.packedOutput + return as.primaryOutput } -func (as *AndroidAppSet) InstallFile() string { - return as.installFile +func (as *AndroidAppSet) PackedAdditionalOutputs() android.Path { + return as.packedOutput } func (as *AndroidAppSet) APKCertsFile() android.Path { @@ -114,11 +114,11 @@ func SupportedAbis(ctx android.ModuleContext) []string { func (as *AndroidAppSet) GenerateAndroidBuildActions(ctx android.ModuleContext) { as.packedOutput = android.PathForModuleOut(ctx, ctx.ModuleName()+".zip") + as.primaryOutput = android.PathForModuleOut(ctx, as.BaseModuleName()+".apk") as.apkcertsFile = android.PathForModuleOut(ctx, "apkcerts.txt") // We are assuming here that the install file in the APK // set has `.apk` suffix. If it doesn't the build will fail. // APK sets containing APEX files are handled elsewhere. - as.installFile = as.BaseModuleName() + ".apk" screenDensities := "all" if dpis := ctx.Config().ProductAAPTPrebuiltDPI(); len(dpis) > 0 { screenDensities = strings.ToUpper(strings.Join(dpis, ",")) @@ -127,11 +127,11 @@ func (as *AndroidAppSet) GenerateAndroidBuildActions(ctx android.ModuleContext) // TODO(asmundak): do we support device features ctx.Build(pctx, android.BuildParams{ - Rule: extractMatchingApks, - Description: "Extract APKs from APK set", - Output: as.packedOutput, - ImplicitOutput: as.apkcertsFile, - Inputs: android.Paths{as.prebuilt.SingleSourcePath(ctx)}, + Rule: extractMatchingApks, + Description: "Extract APKs from APK set", + Output: as.primaryOutput, + ImplicitOutputs: android.WritablePaths{as.packedOutput, as.apkcertsFile}, + Inputs: android.Paths{as.prebuilt.SingleSourcePath(ctx)}, Args: map[string]string{ "abis": strings.Join(SupportedAbis(ctx), ","), "allow-prereleased": strconv.FormatBool(proptools.Bool(as.properties.Prerelease)), @@ -140,6 +140,7 @@ func (as *AndroidAppSet) GenerateAndroidBuildActions(ctx android.ModuleContext) "stem": as.BaseModuleName(), "apkcerts": as.apkcertsFile.String(), "partition": as.PartitionTag(ctx.DeviceConfig()), + "zip": as.packedOutput.String(), }, }) } diff --git a/java/app_set_test.go b/java/app_set_test.go index adaf71bab..03eb66786 100644 --- a/java/app_set_test.go +++ b/java/app_set_test.go @@ -17,19 +17,20 @@ package java import ( "fmt" "reflect" + "strings" "testing" "android/soong/android" ) func TestAndroidAppSet(t *testing.T) { - ctx, _ := testJava(t, ` + result := PrepareForTestWithJavaDefaultModules.RunTestWithBp(t, ` android_app_set { name: "foo", set: "prebuilts/apks/app.apks", prerelease: true, }`) - module := ctx.ModuleForTests("foo", "android_common") + module := result.ModuleForTests("foo", "android_common") const packedSplitApks = "foo.zip" params := module.Output(packedSplitApks) if params.Rule == nil { @@ -41,9 +42,22 @@ func TestAndroidAppSet(t *testing.T) { if s := params.Args["partition"]; s != "system" { t.Errorf("wrong partition value: '%s', expected 'system'", s) } - mkEntries := android.AndroidMkEntriesForTest(t, ctx, module.Module())[0] + + android.AssertPathRelativeToTopEquals(t, "incorrect output path", + "out/soong/.intermediates/foo/android_common/foo.apk", params.Output) + + android.AssertPathsRelativeToTopEquals(t, "incorrect implicit output paths", + []string{ + "out/soong/.intermediates/foo/android_common/foo.zip", + "out/soong/.intermediates/foo/android_common/apkcerts.txt", + }, + params.ImplicitOutputs.Paths()) + + mkEntries := android.AndroidMkEntriesForTest(t, result.TestContext, module.Module())[0] actualInstallFile := mkEntries.EntryMap["LOCAL_APK_SET_INSTALL_FILE"] - expectedInstallFile := []string{"foo.apk"} + expectedInstallFile := []string{ + strings.Replace(params.ImplicitOutputs[0].String(), android.OutSoongDir, result.Config.SoongOutDir(), 1), + } if !reflect.DeepEqual(actualInstallFile, expectedInstallFile) { t.Errorf("Unexpected LOCAL_APK_SET_INSTALL_FILE value: '%s', expected: '%s',", actualInstallFile, expectedInstallFile) diff --git a/java/builder.go b/java/builder.go index ae124a3e7..e64a61f5c 100644 --- a/java/builder.go +++ b/java/builder.go @@ -120,14 +120,14 @@ var ( "extractMatchingApks", blueprint.RuleParams{ Command: `rm -rf "$out" && ` + - `${config.ExtractApksCmd} -o "${out}" -allow-prereleased=${allow-prereleased} ` + + `${config.ExtractApksCmd} -o "${out}" -zip "${zip}" -allow-prereleased=${allow-prereleased} ` + `-sdk-version=${sdk-version} -abis=${abis} ` + `--screen-densities=${screen-densities} --stem=${stem} ` + `-apkcerts=${apkcerts} -partition=${partition} ` + `${in}`, CommandDeps: []string{"${config.ExtractApksCmd}"}, }, - "abis", "allow-prereleased", "screen-densities", "sdk-version", "stem", "apkcerts", "partition") + "abis", "allow-prereleased", "screen-densities", "sdk-version", "stem", "apkcerts", "partition", "zip") turbine, turbineRE = pctx.RemoteStaticRules("turbine", blueprint.RuleParams{ |