summaryrefslogtreecommitdiff
path: root/java/aapt2.go
diff options
context:
space:
mode:
Diffstat (limited to 'java/aapt2.go')
-rw-r--r--java/aapt2.go49
1 files changed, 46 insertions, 3 deletions
diff --git a/java/aapt2.go b/java/aapt2.go
index 70c750716..bcc8e9765 100644
--- a/java/aapt2.go
+++ b/java/aapt2.go
@@ -109,9 +109,35 @@ func aapt2CompileDirs(ctx android.ModuleContext, flata android.WritablePath, dir
})
}
+var aapt2CompileZipRule = pctx.AndroidStaticRule("aapt2CompileZip",
+ blueprint.RuleParams{
+ Command: `${config.ZipSyncCmd} -d $resZipDir $in && ` +
+ `${config.Aapt2Cmd} compile -o $out $cFlags --legacy --dir $resZipDir`,
+ CommandDeps: []string{
+ "${config.Aapt2Cmd}",
+ "${config.ZipSyncCmd}",
+ },
+ }, "cFlags", "resZipDir")
+
+func aapt2CompileZip(ctx android.ModuleContext, flata android.WritablePath, zip android.Path) {
+ ctx.Build(pctx, android.BuildParams{
+ Rule: aapt2CompileZipRule,
+ Description: "aapt2 compile zip",
+ Input: zip,
+ Output: flata,
+ Args: map[string]string{
+ // Always set --pseudo-localize, it will be stripped out later for release
+ // builds that don't want it.
+ "cFlags": "--pseudo-localize",
+ "resZipDir": android.PathForModuleOut(ctx, "aapt2", "reszip", flata.Base()).String(),
+ },
+ })
+}
+
var aapt2LinkRule = pctx.AndroidStaticRule("aapt2Link",
blueprint.RuleParams{
- Command: `${config.Aapt2Cmd} link -o $out $flags --java $genDir --proguard $proguardOptions ` +
+ Command: `rm -rf $genDir && ` +
+ `${config.Aapt2Cmd} link -o $out $flags --java $genDir --proguard $proguardOptions ` +
`--output-text-symbols ${rTxt} $inFlags && ` +
`${config.SoongZipCmd} -write_if_changed -jar -o $genJar -C $genDir -D $genDir &&` +
`${config.ExtractJarPackagesCmd} -i $genJar -o $extraPackages --prefix '--extra-packages '`,
@@ -135,7 +161,7 @@ var fileListToFileRule = pctx.AndroidStaticRule("fileListToFile",
func aapt2Link(ctx android.ModuleContext,
packageRes, genJar, proguardOptions, rTxt, extraPackages android.WritablePath,
flags []string, deps android.Paths,
- compiledRes, compiledOverlay android.Paths) {
+ compiledRes, compiledOverlay android.Paths, splitPackages android.WritablePaths) {
genDir := android.PathForModuleGen(ctx, "aapt2", "R")
@@ -170,12 +196,14 @@ func aapt2Link(ctx android.ModuleContext,
inFlags = append(inFlags, "-R", "@"+overlayFileList.String())
}
+ implicitOutputs := append(splitPackages, proguardOptions, genJar, rTxt, extraPackages)
+
ctx.Build(pctx, android.BuildParams{
Rule: aapt2LinkRule,
Description: "aapt2 link",
Implicits: deps,
Output: packageRes,
- ImplicitOutputs: android.WritablePaths{proguardOptions, genJar, rTxt, extraPackages},
+ ImplicitOutputs: implicitOutputs,
Args: map[string]string{
"flags": strings.Join(flags, " "),
"inFlags": strings.Join(inFlags, " "),
@@ -187,3 +215,18 @@ func aapt2Link(ctx android.ModuleContext,
},
})
}
+
+var aapt2ConvertRule = pctx.AndroidStaticRule("aapt2Convert",
+ blueprint.RuleParams{
+ Command: `${config.Aapt2Cmd} convert --output-format proto $in -o $out`,
+ CommandDeps: []string{"${config.Aapt2Cmd}"},
+ })
+
+func aapt2Convert(ctx android.ModuleContext, out android.WritablePath, in android.Path) {
+ ctx.Build(pctx, android.BuildParams{
+ Rule: aapt2ConvertRule,
+ Input: in,
+ Output: out,
+ Description: "convert to proto",
+ })
+}