diff --git a/apex/apex_test.go b/apex/apex_test.go index 9f55728f2..482d8749c 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -3428,6 +3428,7 @@ func TestApexWithAppImports(t *testing.T) { dex_preopt: { enabled: false, }, + apex_available: ["myapex"], } android_app_import { @@ -3439,6 +3440,7 @@ func TestApexWithAppImports(t *testing.T) { enabled: false, }, filename: "AwesomePrebuiltAppFooPriv.apk", + apex_available: ["myapex"], } `) @@ -3480,6 +3482,7 @@ func TestApexWithAppImportsPrefer(t *testing.T) { filename: "AppFooPrebuilt.apk", presigned: true, prefer: true, + apex_available: ["myapex"], } `, withFiles(map[string][]byte{ "AppFooPrebuilt.apk": nil, diff --git a/java/androidmk.go b/java/androidmk.go index 7d575253b..68da23ed8 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -626,6 +626,11 @@ func (dstubs *Droidstubs) AndroidMkEntries() []android.AndroidMkEntries { } func (a *AndroidAppImport) AndroidMkEntries() []android.AndroidMkEntries { + if !a.IsForPlatform() { + // The non-platform variant is placed inside APEX. No reason to + // make it available to Make. + return nil + } return []android.AndroidMkEntries{android.AndroidMkEntries{ Class: "APPS", OutputFile: android.OptionalPathForPath(a.outputFile), diff --git a/java/app.go b/java/app.go index 7d509eea1..afc4a60f8 100755 --- a/java/app.go +++ b/java/app.go @@ -986,6 +986,7 @@ func OverrideAndroidTestModuleFactory() android.Module { type AndroidAppImport struct { android.ModuleBase android.DefaultableModuleBase + android.ApexModuleBase prebuilt android.Prebuilt properties AndroidAppImportProperties @@ -1223,7 +1224,9 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext // TODO: Optionally compress the output apk. - a.installPath = ctx.InstallFile(installDir, apkFilename, a.outputFile) + if a.IsForPlatform() { + a.installPath = ctx.InstallFile(installDir, apkFilename, a.outputFile) + } // TODO: androidmk converter jni libs } @@ -1274,6 +1277,13 @@ func (a *AndroidAppImport) Privileged() bool { return Bool(a.properties.Privileged) } +func (a *AndroidAppImport) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool { + // android_app_import might have extra dependencies via uses_libs property. + // Don't track the dependency as we don't automatically add those libraries + // to the classpath. It should be explicitly added to java_libs property of APEX + return false +} + func createVariantGroupType(variants []string, variantGroupName string) reflect.Type { props := reflect.TypeOf((*AndroidAppImportProperties)(nil)) @@ -1320,6 +1330,7 @@ func AndroidAppImportFactory() android.Module { module.processVariants(ctx) }) + android.InitApexModule(module) InitJavaModule(module, android.DeviceSupported) android.InitSingleSourcePrebuiltModule(module, &module.properties, "Apk") @@ -1357,6 +1368,7 @@ func AndroidTestImportFactory() android.Module { module.processVariants(ctx) }) + android.InitApexModule(module) InitJavaModule(module, android.DeviceSupported) android.InitSingleSourcePrebuiltModule(module, &module.properties, "Apk")