aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-12-09 02:09:43 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-12-09 02:09:43 +0000
commit242dc73b03f0d86b03eeecb643f12165547e122d (patch)
tree42f1ef70c4346b18263fd3f937fd790d78619ce7
parentf09a6215999e85d3a825987772ad96f8d4381905 (diff)
parent07a6f586d669cf1b61ae9d0a31c0082fbd0f92c2 (diff)
downloadapksig-242dc73b03f0d86b03eeecb643f12165547e122d.tar.gz
Snap for 7020367 from 07a6f586d669cf1b61ae9d0a31c0082fbd0f92c2 to sc-d1-release
Change-Id: I81e64b927318aabcb8fc5ca8eb3b5636a976da88
-rw-r--r--src/apksigner/java/com/android/apksigner/ApkSignerTool.java17
-rw-r--r--src/apksigner/java/com/android/apksigner/SignerParams.java17
2 files changed, 26 insertions, 8 deletions
diff --git a/src/apksigner/java/com/android/apksigner/ApkSignerTool.java b/src/apksigner/java/com/android/apksigner/ApkSignerTool.java
index 58c60f3..6a0e540 100644
--- a/src/apksigner/java/com/android/apksigner/ApkSignerTool.java
+++ b/src/apksigner/java/com/android/apksigner/ApkSignerTool.java
@@ -1093,10 +1093,19 @@ public class ApkSignerTool {
}
Provider provider;
if (constructorParam != null) {
- // Single-arg Provider constructor
- provider =
- (Provider) providerClass.getConstructor(String.class)
- .newInstance(constructorParam);
+ try {
+ // Single-arg Provider constructor
+ provider =
+ (Provider) providerClass.getConstructor(String.class)
+ .newInstance(constructorParam);
+ } catch (NoSuchMethodException e) {
+ // Starting from JDK 9 the single-arg constructor accepting the configuration
+ // has been replaced by a configure(String) method to be invoked after
+ // instantiating the Provider with the no-arg constructor.
+ provider = (Provider) providerClass.getConstructor().newInstance();
+ provider = (Provider) providerClass.getMethod("configure", String.class)
+ .invoke(provider, constructorParam);
+ }
} else {
// No-arg Provider constructor
provider = (Provider) providerClass.getConstructor().newInstance();
diff --git a/src/apksigner/java/com/android/apksigner/SignerParams.java b/src/apksigner/java/com/android/apksigner/SignerParams.java
index 8c8b550..515cd41 100644
--- a/src/apksigner/java/com/android/apksigner/SignerParams.java
+++ b/src/apksigner/java/com/android/apksigner/SignerParams.java
@@ -209,10 +209,19 @@ public class SignerParams {
}
Provider ksProvider;
if (keystoreProviderArg != null) {
- // Single-arg Provider constructor
- ksProvider =
- (Provider) ksProviderClass.getConstructor(String.class)
- .newInstance(keystoreProviderArg);
+ try {
+ // Single-arg Provider constructor
+ ksProvider =
+ (Provider) ksProviderClass.getConstructor(String.class)
+ .newInstance(keystoreProviderArg);
+ } catch (NoSuchMethodException e) {
+ // Starting from JDK 9 the single-arg constructor accepting the configuration
+ // has been replaced by a configure(String) method to be invoked after
+ // instantiating the Provider with the no-arg constructor.
+ ksProvider = (Provider) ksProviderClass.getConstructor().newInstance();
+ ksProvider = (Provider) ksProviderClass.getMethod("configure",
+ String.class).invoke(ksProvider, keystoreProviderArg);
+ }
} else {
// No-arg Provider constructor
ksProvider = (Provider) ksProviderClass.getConstructor().newInstance();