2015-12-14 134 views
39

我想向GooglePlay發佈我的應用,但首先我想要使用已簽名的apk進行最後一次測試,以確保所有使用的API按鍵與發行版本項(GMaps,臉譜等)無法手動安裝已簽名的apk到設備,出現錯誤「應用程序未安裝」

正常工作,所以我只是讓我的應用程序的簽名版本與我們釋放鑰匙,當我嘗試將應用程序安裝到設備我得到了一個錯誤:

enter image description here

我試圖將apk複製到設備上,並使用apk安裝程序安裝

奇怪的是,當我使用調試簽名密鑰執行相同的過程,一切都很好,我可以安裝並運行應用程序。

這裏是步驟的程序:

我選擇釋放鍵,鍵入密碼。

Here are the steps of the procedure:

我做選擇發行版型,而不是調試

I do select release build type instead of debugging

萬一我也在gradle這個文件中定義的簽名密鑰但我必須承認,我不知道這是必要的。

Just in case i also defined in the gradle file the signing keys but I must admit i dont know is it necessary.

我現在試着像7分七次,所以我認爲這個問題是不僅僅是 輸錯密碼,也我可以用標準的Android調試簽名密鑰這項工作。

如果可以,請幫忙。

+1

薩拉姆。 此答案可能會解決您的問題:[http://stackoverflow.com/a/42745459/1676736](http://stackoverflow.com/a/42745459/1676736) –

+0

我面臨同樣的問題。真正的原因是什麼?你發現了嗎? @Adam Varhegyi –

+0

@RohitSingh下面的答案,哈哈。 –

回答

34

您可能正在使用的是android 5.0或以上的設備。

只需進入設置 - >應用程序 - >點擊您的應用程序。 --->在應用程序信息頁面的操作欄菜單中會出現一個名爲「Uninstall for All users」的選項。您的應用程序將被完全卸載,現在您可以嘗試安裝新版本而沒有任何問題。希望這會幫助你

從下面的鏈接檢查我的解決方案。

Link 1

希望它會幫助你。

+0

他們怎麼能以這種方式做到這一點。 順便說一句btw的感謝。 –

+0

@adam因爲他們是GOOGLE ....:P :)有一個美好的一天.. –

+1

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – SOFe

10

「應用程序未安裝」顯示具有相同程序包的應用程序是否已安裝在同一設備中。只需刪除您的第一個應用程序,然後再將其用於簽名apk。這將工作。乾杯!

+5

是的,我知道,但它不是以前安裝。 –

38

對於目前的Updated Android Studio 2.3用戶這個答案是給你的,因爲現在幾乎沒有人使用Eclipse來進行Android開發,因爲Android studio有巨大的進步。

所以,按照這種方式創建您的Signed apk文件。

  1. Build>生成Signed apk
  2. 創建Keystore path
  3. Password, alias, key password
  4. Build type相應地選擇(例如,在playstore使用release中釋放)。
  5. Signature Version選擇V1V2複選框。
  6. Finsih
  7. 請從explorer轉到您選擇用於apk存儲的位置,然後您會看到您的.apk文件名爲app-release.apk使用它。
+5

選擇簽名V1做到了 – Meanman

+0

您節省了我的很多時間 – curiousMind

+0

Yesss。這解決了我的問題。謝謝你 – Riz

0

這是很古老的問題,但我的解決辦法是改變的versionCode(增加)的build.gradle

3

在這裏,我解決了這個問題

背後的原因這個問題是,手機中已經有一個具有相同包名的應用程序,但在手機菜單中找不到它(U已經取消了安裝,但實際上它仍然在手機中)。

要查看應用到手機設置 - >APPS。 在那裏你可以看到應用程序,但在裏面,可以禁用UNINSTALL按鈕。點擊菜單溢出按鈕查看卸載所有用戶

爲所有用戶執行卸載後,我已成功安裝了我簽名的apk。 您也可以使用adb從手機上卸載應用程序。

adb uninstall package name 
1

這可能發生是由於您選擇了簽名版本。在某些電話上,如果將簽名版本選作V2,則會發生安裝錯誤。所以如果發生這種情況,請嘗試選擇V1,它肯定會起作用。

26

選擇簽名版本v1和v2都解決了這個問題對我來說....試試enter image description here

+0

這是我的問題。問題仍然是我們爲什麼還要標記V1(jar簽名)?以及谷歌如何期望我們知道這一點? –

+0

這不是強制性的。如果可能,您應該檢查這兩個複選框的兩個,但如果新的V2簽名機制給您帶來問題,您可以只檢查是否遇到問題。 –

5

以上shubham SONI答案對我的作品,實際上它發生在Android版本> = 5.0.In上面你能安裝只需使用這個,而創建你的apk enter image description here ...

+0

爲什麼這個重複的答案? – sziraqui

+0

@sziraqui:Subhankar soni沒有提到爲什麼「無法手動安裝已簽名的apk到設備,出現錯誤」應用程序未安裝「。我面臨與上述Os相關的相同問題,因此爲了更好地理解我提到的問題。對於android版本<= 5.0,您將能夠安裝相同的apk而不標記兩個簽名版本複選框。 – Amitraj

+0

您的答案只是在原始答案中增加一個點,所以它應該是一條評論。如果你發佈這個作爲答案,你應該添加一些支持你的android 5.0聲明的引文。如果你的問題實際上與android ide相關而不是android版本呢? – sziraqui

2

這可能是因爲你從外部SD卡存儲運行APK文件。 只需複製APK文件導入到內部storagem問題將得到解決

1

選擇這兩個簽名版本v1和v2將解決此問題

enter image description here

V1方案

A JAR file can be signed by using the command line jarsigner tool or directly through the java.security API. Every file entry, including non-signature related files in the META-INF directory, will be signed if the JAR file is signed by the jarsigner tool. For every file entry signed in the signed JAR file, an individual manifest entry is created for it as long as it does not already exist in the manifest

V2方案

v1 signatures do not protect some parts of the APK, such as ZIP metadata. The APK verifier needs to process lots of untrusted (not yet verified) data structures and then discard data not covered by the signatures. This offers a sizeable attack surface. Moreover, the APK verifier must uncompress all compressed entries, consuming more time and memory. To address these issues, Android 7.0 introduced APK Signature Scheme v2

默認情況下,Android Studio 2.2和Android插件Gradle 2.2使用APK簽名方案v2和使用JAR簽名的傳統簽名方案對您的應用簽名。

建議使用APK簽名方案v2,但不是強制性的。 please see the details

-2

轉到的build.gradle(模塊:APP)

使用這種 - minifyEnabled假

相關問題