Replace aapt support with aapt2
Use aapt2 instead of aapt to compile Android app resources.
Also generate all files into srcjars instead of individual
sources.
Test: m checkbuild
Change-Id: I5a67991a0daf0017e8159b46fcff7d5564a91468
diff --git a/java/app_builder.go b/java/app_builder.go
index ed7abce..82574ae 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -27,31 +27,6 @@
)
var (
- aaptCreateResourceJavaFile = pctx.AndroidStaticRule("aaptCreateResourceJavaFile",
- blueprint.RuleParams{
- Command: `rm -rf "$javaDir" && mkdir -p "$javaDir" && ` +
- `$aaptCmd package -m $aaptFlags -P $publicResourcesFile -G $proguardOptionsFile ` +
- `-J $javaDir || ( rm -rf "$javaDir/*"; exit 41 ) && ` +
- `find $javaDir -name "*.java" > $javaFileList`,
- CommandDeps: []string{"$aaptCmd"},
- },
- "aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
-
- aaptCreateAssetsPackage = pctx.AndroidStaticRule("aaptCreateAssetsPackage",
- blueprint.RuleParams{
- Command: `rm -f $out && $aaptCmd package $aaptFlags -F $out`,
- CommandDeps: []string{"$aaptCmd"},
- },
- "aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
-
- aaptAddResources = pctx.AndroidStaticRule("aaptAddResources",
- blueprint.RuleParams{
- // TODO: add-jni-shared-libs-to-package
- Command: `cp -f $in $out.tmp && $aaptCmd package -u $aaptFlags -F $out.tmp && mv $out.tmp $out`,
- CommandDeps: []string{"$aaptCmd"},
- },
- "aaptFlags")
-
signapk = pctx.AndroidStaticRule("signapk",
blueprint.RuleParams{
Command: `java -jar $signapkCmd $certificates $in $out`,
@@ -75,63 +50,30 @@
pctx.HostJavaToolVariable("signapkCmd", "signapk.jar")
}
-func CreateResourceJavaFiles(ctx android.ModuleContext, flags []string,
- deps android.Paths) (android.Path, android.Path, android.Path) {
- javaDir := android.PathForModuleGen(ctx, "R")
- javaFileList := android.PathForModuleOut(ctx, "R.filelist")
- publicResourcesFile := android.PathForModuleOut(ctx, "public_resources.xml")
- proguardOptionsFile := android.PathForModuleOut(ctx, "proguard.options")
-
- ctx.Build(pctx, android.BuildParams{
- Rule: aaptCreateResourceJavaFile,
- Description: "aapt create R.java",
- Outputs: android.WritablePaths{publicResourcesFile, proguardOptionsFile, javaFileList},
- Implicits: deps,
- Args: map[string]string{
- "aaptFlags": strings.Join(flags, " "),
- "publicResourcesFile": publicResourcesFile.String(),
- "proguardOptionsFile": proguardOptionsFile.String(),
- "javaDir": javaDir.String(),
- "javaFileList": javaFileList.String(),
- },
+var combineApk = pctx.AndroidStaticRule("combineApk",
+ blueprint.RuleParams{
+ Command: `${config.MergeZipsCmd} $out $in`,
+ CommandDeps: []string{"${config.MergeZipsCmd}"},
})
- return publicResourcesFile, proguardOptionsFile, javaFileList
-}
+func CreateAppPackage(ctx android.ModuleContext, outputFile android.WritablePath,
+ resJarFile, dexJarFile android.Path, certificates []string) {
-func CreateExportPackage(ctx android.ModuleContext, flags []string, deps android.Paths) android.ModuleOutPath {
- outputFile := android.PathForModuleOut(ctx, "package-export.apk")
+ // TODO(ccross): JNI libs
+
+ unsignedApk := android.PathForModuleOut(ctx, "unsigned.apk")
+
+ inputs := android.Paths{resJarFile}
+ if dexJarFile != nil {
+ inputs = append(inputs, dexJarFile)
+ }
ctx.Build(pctx, android.BuildParams{
- Rule: aaptCreateAssetsPackage,
- Description: "aapt export package",
- Output: outputFile,
- Implicits: deps,
- Args: map[string]string{
- "aaptFlags": strings.Join(flags, " "),
- },
+ Rule: combineApk,
+ Inputs: inputs,
+ Output: unsignedApk,
})
- return outputFile
-}
-
-func CreateAppPackage(ctx android.ModuleContext, flags []string, jarFile android.Path,
- certificates []string) android.Path {
-
- resourceApk := android.PathForModuleOut(ctx, "resources.apk")
-
- ctx.Build(pctx, android.BuildParams{
- Rule: aaptAddResources,
- Description: "aapt package",
- Output: resourceApk,
- Input: jarFile,
- Args: map[string]string{
- "aaptFlags": strings.Join(flags, " "),
- },
- })
-
- outputFile := android.PathForModuleOut(ctx, "package.apk")
-
var certificateArgs []string
for _, c := range certificates {
certificateArgs = append(certificateArgs, c+".x509.pem", c+".pk8")
@@ -141,11 +83,9 @@
Rule: signapk,
Description: "signapk",
Output: outputFile,
- Input: resourceApk,
+ Input: unsignedApk,
Args: map[string]string{
"certificates": strings.Join(certificateArgs, " "),
},
})
-
- return outputFile
}