diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-09 02:09:43 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-09 02:09:43 +0000 |
commit | 242dc73b03f0d86b03eeecb643f12165547e122d (patch) | |
tree | 42f1ef70c4346b18263fd3f937fd790d78619ce7 | |
parent | f09a6215999e85d3a825987772ad96f8d4381905 (diff) | |
parent | 07a6f586d669cf1b61ae9d0a31c0082fbd0f92c2 (diff) | |
download | apksig-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.java | 17 | ||||
-rw-r--r-- | src/apksigner/java/com/android/apksigner/SignerParams.java | 17 |
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(); |