2017-03-07 136 views
2

我想將我的應用發佈到谷歌播放。所以我按照這個link無法安裝APK apk生成Android Studio後

我創建了一個密鑰庫,併成功構建了app-release.apk。但是,當我安裝APK我的設備,它採取錯誤:

~/Android/Sdk/platform-tools$ ./adb install ~/Downloads/libraries/LolliPin/app/app-release.apk 
[100%] /data/local/tmp/app-release.apk 
     pkg: /data/local/tmp/app-release.apk 
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 

當上傳到開發者控制檯,該網站說應用程序還沒有簽署。

我再次嘗試使用手動步驟:jarsigned - > zipalign - > apksigner但它沒有運行。

請告訴我解決方案。非常感謝!

更新:當我驗證了APK(由Android工作室創建 - >生成APK簽署)由apksigned,它顯示錯誤:

~/Android/Sdk/build-tools/25.0.2$ ./apksigner verify /home/haitt22/test/app-release.apk 
DOES NOT VERIFY 
ERROR: No JAR signatures 

更新2:當我在構建工具使用apksigner簽署登錄:

/apksigner sign --ks /home/haitt22/test/test.jks /home/ubuntu/test/app-release-aligned.apk 
Keystore password for signer #1: 
Exception in thread "main" java.lang.IllegalAccessError: class com.android.apksig.internal.apk.v1.V1SchemeSigner (in unnamed module @0x646d64ab) cannot access class sun.security.x509.AlgorithmId (in module java.base) because module java.base does not export sun.security.x509 to unnamed module @0x646d64ab 
    at com.android.apksig.internal.apk.v1.V1SchemeSigner.getSupportedAlgorithmId(V1SchemeSigner.java:625) 
    at com.android.apksig.internal.apk.v1.V1SchemeSigner.<clinit>(V1SchemeSigner.java:541) 
    at com.android.apksig.DefaultApkSignerEngine.<init>(DefaultApkSignerEngine.java:149) 
    at com.android.apksig.DefaultApkSignerEngine.<init>(DefaultApkSignerEngine.java:52) 
    at com.android.apksig.DefaultApkSignerEngine$Builder.build(DefaultApkSignerEngine.java:902) 
    at com.android.apksig.ApkSigner.sign(ApkSigner.java:259) 
    at com.android.apksig.ApkSigner.sign(ApkSigner.java:178) 
    at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:277) 
    at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89) 
+1

APK安裝到設備不需要APK簽名。如果您的設備的開發者模式已啓用並允許從不受信任的源安裝,則可以將未簽名的APK安裝到設備 – Raptor

+0

此外,您可以單擊Android Studio中的「運行」或「調試」以在設備中安裝和啓動您的應用程序,已啓用USB調試 – Raptor

+0

我想上傳到Google Play,所以我需要簽名。 –

回答

0

使用的OpenJDK 8的Java 9造成這個問題

1

你需要確保,無論罐簽名的d APK簽名檢查:

Both need to be checked