From f6dbd1e4a127b95276127afe64a095345678019b Mon Sep 17 00:00:00 2001 From: Googler Date: Mon, 24 Jan 2022 20:49:00 -0800 Subject: [PATCH] Populate v3 sign min api for rotation in ApkInfo. PiperOrigin-RevId: 423981347 --- .../build/lib/rules/android/AndroidBinary.java | 3 ++- .../devtools/build/lib/rules/android/ApkInfo.java | 11 ++++++++++- .../lib/starlarkbuildapi/android/ApkInfoApi.java | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 5d8ea15e89bb06..2e7258018909b4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -817,7 +817,8 @@ public static RuleConfiguredTargetBuilder createAndroidBinary( getCoverageInstrumentationJarForApk(ruleContext), resourceApk.getManifest(), signingKeys, - signingLineage)) + signingLineage, + keyRotationMinSdk)) .addNativeDeclaredProvider(new AndroidPreDexJarProvider(jarToDex)) .addNativeDeclaredProvider( AndroidFeatureFlagSetProvider.create( diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java index b4f5f9857b0b11..cdf53ddd058ec0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java @@ -43,6 +43,7 @@ public class ApkInfo extends NativeInfo implements ApkInfoApi { private final Artifact mergedManifest; private final ImmutableList signingKeys; @Nullable private final Artifact signingLineage; + @Nullable private final String signingMinV3RotationApiVersion; ApkInfo( Artifact apk, @@ -51,7 +52,8 @@ public class ApkInfo extends NativeInfo implements ApkInfoApi { @Nullable Artifact coverageMetadata, Artifact mergedManifest, List signingKeys, - @Nullable Artifact signingLineage) { + @Nullable Artifact signingLineage, + @Nullable String signingMinV3RotationApiVersion) { this.apk = apk; this.unsignedApk = unsignedApk; this.deployJar = deployJar; @@ -59,6 +61,7 @@ public class ApkInfo extends NativeInfo implements ApkInfoApi { this.mergedManifest = mergedManifest; this.signingKeys = ImmutableList.copyOf(signingKeys); this.signingLineage = signingLineage; + this.signingMinV3RotationApiVersion = signingMinV3RotationApiVersion; } @Override @@ -112,6 +115,12 @@ public Artifact getSigningLineage() { return signingLineage; } + @Nullable + @Override + public String getSigningMinV3RotationApiVersion() { + return signingMinV3RotationApiVersion; + } + /** Provider for {@link ApkInfo}. */ public static class ApkInfoProvider extends BuiltinProvider implements ApkInfoApiProvider { diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java index 68dfa139ab8f29..644a5df1bd5f8d 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/ApkInfoApi.java @@ -103,6 +103,16 @@ public interface ApkInfoApi extends StructApi { @Nullable FileT getSigningLineage(); + /** Returns the minimum API version for signing the APK with key rotation. */ + @StarlarkMethod( + name = "signing_min_v3_rotation_api_version", + doc = "Returns the minimum API version for signing the APK with key rotation.", + documented = false, + structField = true, + allowReturnNones = true) + @Nullable + String getSigningMinV3RotationApiVersion(); + /** Provider for {@link ApkInfoApi}. */ @StarlarkBuiltin( name = "ApkInfoApiProvider",