Add packing proguard.txt for AARs into gen_maven_artifact macro.
RELNOTES=N/A
PiperOrigin-RevId: 345035431
diff --git a/java/dagger/hilt/android/BUILD b/java/dagger/hilt/android/BUILD
index 0b11f19..ba531dd 100644
--- a/java/dagger/hilt/android/BUILD
+++ b/java/dagger/hilt/android/BUILD
@@ -181,6 +181,9 @@
],
manifest = "AndroidManifest.xml",
packaging = "aar",
+ proguard_specs = [
+ "//java/dagger/hilt/android/lifecycle:proguard-rules.pro",
+ ],
)
filegroup(
diff --git a/java/dagger/hilt/android/lifecycle/proguard-rules.pro b/java/dagger/hilt/android/lifecycle/proguard-rules.pro
index 293d195..579ead0 100644
--- a/java/dagger/hilt/android/lifecycle/proguard-rules.pro
+++ b/java/dagger/hilt/android/lifecycle/proguard-rules.pro
@@ -2,4 +2,4 @@
-keepclasseswithmembernames class * extends androidx.lifecycle.ViewModel {
@dagger.hilt.android.lifecycle.ViewModelInject
<init>(...);
-}
\ No newline at end of file
+}
diff --git a/tools/maven.bzl b/tools/maven.bzl
index 76a5872..c79001d 100644
--- a/tools/maven.bzl
+++ b/tools/maven.bzl
@@ -56,7 +56,8 @@
shaded_deps = None,
shaded_rules = None,
manifest = None,
- lint_deps = None):
+ lint_deps = None,
+ proguard_specs = None):
_gen_maven_artifact(
name,
artifact_name,
@@ -75,7 +76,8 @@
shaded_deps,
shaded_rules,
manifest,
- lint_deps
+ lint_deps,
+ proguard_specs
)
def _gen_maven_artifact(
@@ -96,7 +98,8 @@
shaded_deps,
shaded_rules,
manifest,
- lint_deps):
+ lint_deps,
+ proguard_specs):
"""Generates the files required for a maven artifact.
This macro generates the following targets:
@@ -131,6 +134,7 @@
shaded_rules: The shaded rules for the jarjar.
manifest: The AndroidManifest.xml to bundle in when packaing an 'aar'.
lint_deps: The lint targets to be bundled in when packaging an 'aar'.
+ proguard_specs: The proguard spec files to be bundled in when packaging an 'aar'
"""
_validate_maven_deps(
@@ -181,11 +185,24 @@
else:
lint_jar_name = None
+ if proguard_specs:
+ # Concatenate all proguard rules since an aar only contains a single proguard.txt
+ native.genrule(
+ name = name + "-proguard.txt",
+ srcs = proguard_specs,
+ outs = [name + "-proguard.txt"],
+ cmd = "cat $(SRCS) > $@",
+ )
+ proguard_file = name + "-proguard.txt"
+ else:
+ proguard_file = None
+
_package_android_library(
name = name + "-android-lib",
manifest = manifest,
classesJar = name + "-classes.jar",
lintJar = lint_jar_name,
+ proguardSpec = proguard_file,
)
# Copy intermediate outputs to final one.
@@ -329,6 +346,8 @@
inputs = [ctx.file.manifest, ctx.file.classesJar]
if ctx.file.lintJar:
inputs.append(ctx.file.lintJar)
+ if ctx.file.proguardSpec:
+ inputs.append(ctx.file.proguardSpec)
ctx.actions.run_shell(
inputs = inputs,
@@ -340,12 +359,16 @@
if [[ -a {lintJar} ]]; then
cp {lintJar} $TMPDIR/lint.jar
fi
+ if [[ -a {proguardSpec} ]]; then
+ cp {proguardSpec} $TMPDIR/proguard.txt
+ fi
touch $TMPDIR/R.txt
zip -j {outputFile} $TMPDIR/*
""".format(
manifest = ctx.file.manifest.path,
classesJar = ctx.file.classesJar.path,
lintJar = ctx.file.lintJar.path if ctx.file.lintJar else "none",
+ proguardSpec = ctx.file.proguardSpec.path if ctx.file.proguardSpec else "none",
outputFile = ctx.outputs.aar.path,
),
)
@@ -368,6 +391,11 @@
allow_single_file = True,
mandatory = False,
),
+ "proguardSpec": attr.label(
+ doc = "The proguard.txt file.",
+ allow_single_file = True,
+ mandatory = False,
+ ),
},
outputs = {
"aar": "%{name}.aar",