Increase verbosity around crash site for better ACRA reports.

Received the following crash report, where the user said it crashed
while trying to install the priviledged extension:

```
java.lang.NullPointerException: Attempt to read from field 'android.content.pm.Signature[] android.content.pm.PackageInfo.signatures' on a null object reference
at org.fdroid.fdroid.installer.ApkSignatureVerifier.getApkSignature(ApkSignatureVerifier.java:70)
at org.fdroid.fdroid.installer.ApkSignatureVerifier.hasFDroidSignature(ApkSignatureVerifier.java:54)
at org.fdroid.fdroid.installer.ExtensionInstaller.installPackageInternal(ExtensionInstaller.java:53)
at org.fdroid.fdroid.installer.Installer.installPackage(Installer.java:265)
at org.fdroid.fdroid.installer.InstallerService.onHandleIntent(InstallerService.java:77)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.os.HandlerThread.run(HandlerThread.java:61)
```

Not sure how to address it yet, so adding more specific excetpion for
if it happens in the future.
This commit is contained in:
Peter Serwylo 2017-04-18 18:31:30 +10:00
parent 1eb224fc5e
commit 6a0b16fc7d

View File

@ -66,7 +66,15 @@ class ApkSignatureVerifier {
private byte[] getApkSignature(File apkFile) {
final String pkgPath = apkFile.getAbsolutePath();
if (!apkFile.exists()) {
throw new IllegalArgumentException("Could not find APK at \"" + pkgPath + "\" when checking for signature.");
}
PackageInfo pkgInfo = pm.getPackageArchiveInfo(pkgPath, PackageManager.GET_SIGNATURES);
if (pkgInfo == null) {
throw new NullPointerException("Could not find PackageInfo for package at \"" + pkgPath + "\".");
}
return signatureToBytes(pkgInfo.signatures);
}