2015-12-14 133 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假

相关问题