summaryrefslogtreecommitdiff
path: root/java/app.go
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2019-03-19 16:03:11 -0700
committer Colin Cross <ccross@android.com> 2019-03-19 23:33:47 +0000
commite560c4aabc9ef65ad10f6d795f56f2a1fbd8b3db (patch)
tree495f88e3db5e8aa9511a451a11bc2ec6f6c83353 /java/app.go
parent1b7a4b00742fe7bcd22ae04e1b9eae2c01b3677c (diff)
Support package_splits
Pass the package_splits list from the property to aapt2 as --split arguments, sign the extra outputs, install them, and add them as extra output files for SourceFileProducer. Bug: 127921149 Test: TestAppSplits Change-Id: Id94a53ae6a8a68ec81e98abba2fefc9c23feaa7a
Diffstat (limited to 'java/app.go')
-rw-r--r--java/app.go21
1 files changed, 18 insertions, 3 deletions
diff --git a/java/app.go b/java/app.go
index 8a422fc2c..45e3a8369 100644
--- a/java/app.go
+++ b/java/app.go
@@ -226,6 +226,8 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) {
aaptLinkFlags = append(aaptLinkFlags, a.additionalAaptFlags...)
+ a.aapt.splitNames = a.appProperties.Package_splits
+
a.aapt.buildActions(ctx, sdkContext(a), aaptLinkFlags...)
// apps manifests are handled by aapt, don't let Module see them
@@ -341,19 +343,32 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) {
CreateAppPackage(ctx, packageFile, a.exportPackage, jniJarFile, dexJarFile, certificates)
a.outputFile = packageFile
+ for _, split := range a.aapt.splits {
+ // Sign the split APKs
+ packageFile := android.PathForModuleOut(ctx, ctx.ModuleName()+"_"+split.suffix+".apk")
+ CreateAppPackage(ctx, packageFile, split.path, nil, nil, certificates)
+ a.extraOutputFiles = append(a.extraOutputFiles, packageFile)
+ }
+
// Build an app bundle.
bundleFile := android.PathForModuleOut(ctx, "base.zip")
BuildBundleModule(ctx, bundleFile, a.exportPackage, jniJarFile, dexJarFile)
a.bundleFile = bundleFile
// Install the app package.
+ var installDir android.OutputPath
if ctx.ModuleName() == "framework-res" {
// framework-res.apk is installed as system/framework/framework-res.apk
- ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".apk", a.outputFile)
+ installDir = android.PathForModuleInstall(ctx, "framework")
} else if Bool(a.appProperties.Privileged) {
- ctx.InstallFile(android.PathForModuleInstall(ctx, "priv-app", a.installApkName), a.installApkName+".apk", a.outputFile)
+ installDir = android.PathForModuleInstall(ctx, "priv-app", a.installApkName)
} else {
- ctx.InstallFile(android.PathForModuleInstall(ctx, "app", a.installApkName), a.installApkName+".apk", a.outputFile)
+ installDir = android.PathForModuleInstall(ctx, "app", a.installApkName)
+ }
+
+ ctx.InstallFile(installDir, a.installApkName+".apk", a.outputFile)
+ for _, split := range a.aapt.splits {
+ ctx.InstallFile(installDir, a.installApkName+"_"+split.suffix+".apk", split.path)
}
}