aboutsummaryrefslogtreecommitdiffstats
path: root/java/app_builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'java/app_builder.go')
-rw-r--r--java/app_builder.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/java/app_builder.go b/java/app_builder.go
index 424aec85..476eb60c 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -134,6 +134,50 @@ func BuildAAR(ctx android.ModuleContext, outputFile android.WritablePath,
})
}
+var buildBundleModule = pctx.AndroidStaticRule("buildBundleModule",
+ blueprint.RuleParams{
+ Command: `${config.Zip2ZipCmd} -i ${in} -o ${out}.res.zip AndroidManifest.xml:manifest/AndroidManifest.xml resources.pb "res/**/*" "assets/**/*" &&` +
+ `${config.Zip2ZipCmd} -i ${dexJar} -o ${out}.dex.zip "classes*.dex:dex/" && ` +
+ `${config.MergeZipsCmd} ${out} ${out}.res.zip ${out}.dex.zip ${jniJar} && ` +
+ `rm ${out}.res.zip ${out}.dex.zip`,
+ CommandDeps: []string{
+ "${config.Zip2ZipCmd}",
+ "${config.MergeZipsCmd}",
+ },
+ }, "dexJar", "jniJar")
+
+// Builds an app into a module suitable for input to bundletool
+func BuildBundleModule(ctx android.ModuleContext, outputFile android.WritablePath,
+ resJarFile, jniJarFile, dexJarFile android.Path) {
+
+ protoResJarFile := android.PathForModuleOut(ctx, "package-res.pb.apk")
+ aapt2Convert(ctx, protoResJarFile, resJarFile)
+
+ var deps android.Paths
+ var jniPath string
+ var dexPath string
+ if dexJarFile != nil {
+ deps = append(deps, dexJarFile)
+ dexPath = dexJarFile.String()
+ }
+ if jniJarFile != nil {
+ deps = append(deps, jniJarFile)
+ jniPath = jniJarFile.String()
+ }
+
+ ctx.Build(pctx, android.BuildParams{
+ Rule: buildBundleModule,
+ Implicits: deps,
+ Input: protoResJarFile,
+ Output: outputFile,
+ Description: "bundle",
+ Args: map[string]string{
+ "dexJar": dexPath,
+ "jniJar": jniPath,
+ },
+ })
+}
+
func TransformJniLibsToJar(ctx android.ModuleContext, outputFile android.WritablePath,
jniLibs []jniLib) {