Fixed
Status Update
Comments
en...@google.com <en...@google.com>
[Deleted User] <[Deleted User]> #3
[Empty comment from Monorail migration]
ap...@google.com <ap...@google.com> #4
[Empty comment from Monorail migration]
ap...@google.com <ap...@google.com> #5
kl...@google.com <kl...@google.com> #6
The fix has been released in apksigner 0.7, released as part of Android SDK Build Tools 26.0.1.
Description
Below is a contrived example to demonstrate the issue, as well as the working version on a Linux system. Since the keystore and APK passed in do not exist, the expected result is a FileNotFoundException. This was chosen to remove any possibility of malformed files interfering with the result, but the issue was first observed with a real keystore and APK.
***Windows Server 2008 R2***
C:\>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
C:\>"C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\apksigner" --version
0.5
C:\>"C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\apksigner" sign --ks "nonexistent.jks" --ks-pass pass:123123 --ks-key-alias "bug apksigner test" nonexistent.apk
a was unexpected at this time.
C:\>"C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\apksigner" sign --ks "nonexistent.jks" --ks-pass pass:123123 --ks-key-alias "b apksigner test" nonexistent.apk
apk was unexpected at this time.
C:\>"C:\Program Files (x86)\Android\android-sdk\build-tools\25.0.3\apksigner" sign --ks "nonexistent.jks" --ks-pass pass:123123 --ks-key-alias "bugr apksigner test" nonexistent.apk
Failed to load signer "signer #1"
java.io.FileNotFoundException: nonexistent.jks (The system cannot find the file specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.android.apksigner.ApkSignerTool$SignerParams.loadKeyStoreFromFile(ApkSignerTool.java:733)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:636)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:580)
at com.android.apksigner.ApkSignerTool$SignerParams.access$200(ApkSignerTool.java:534)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:229)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:87)
***Ubuntu 16.04***
> java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
> /opt/android-sdk/build-tools/25.0.3/apksigner --version
0.5
> /opt/android-sdk/build-tools/25.0.3/apksigner sign --ks "nonexistent.jks" --ks-pass pass:123123 --ks-key-alias "bug apksigner test" nonexistent.apk
Failed to load signer "signer #1"
java.io.FileNotFoundException: nonexistent.jks (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.android.apksigner.ApkSignerTool$SignerParams.loadKeyStoreFromFile(ApkSignerTool.java:733)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:636)
at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:580)
at com.android.apksigner.ApkSignerTool$SignerParams.access$200(ApkSignerTool.java:534)
at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:229)
at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:87)