无法将签名的APK手动安装到设备,出现错误“未安装应用程序”


107

我想将我的应用发布给GooglePlay,但首先,我想对签名的apk做最后一次测试,以确保所有使用的API密钥都能与发行版(GMaps,Facebook等)一起正常使用

所以我只是用我们的发布密钥制作了一个签名的应用程序版本,当我尝试将应用程序安装到设备上时出现错误:

在此处输入图片说明

我试图将apk复制到设备并使用apk安装程序应用程序进行安装。

奇怪的是,当我使用调试签名密钥执行相同的过程时,一切都很好,我可以安装并运行该应用程序。

以下是该过程的步骤:

我选择释放键,输入密码。

以下是该过程的步骤:

选择发布版本类型而不是调试

我选择发布版本类型而不是调试

以防万一我还在gradle文件中定义了签名密钥,但我必须承认我不知道这是必要的。

以防万一我还在gradle文件中定义了签名密钥,但我必须承认我不知道这是必要的。

我现在已经尝试了7次7次,所以我认为这个问题不仅是密码输入错误,而且我可以使用标准的debug android签名密钥来实现此目的。

如果可以的话请帮忙。


1
萨拉姆 此答案可能会解决您的问题:http
//stackoverflow.com/a/42745459/1676736

我正面临着同样的问题。真正的原因是什么?你找到了吗?@Adam Varhegyi
罗希特·辛格

@RohitSingh下面的答案,大声笑。
亚当·瓦赫吉

我的意思是,即使您未卸载,该应用程序也没有完全卸载?或其仅适用于Android 5.0(甚至更高版本)。
罗希特·辛格

1
@RohitSingh我的问题正是答案所描述的。该应用程序是为手机上的另一个用户安装的,但没有其他用户看到它。因此,我必须为“所有用户”卸载它
Adam Varhegyi,

Answers:


81

您可能正在使用android 5.0或更高版本的设备。

只需转到设置->应用程序->单击您的应用程序。--->在操作栏菜单的“应用程序信息”页面中,将单击一个名为“为所有用户卸载”的选项。您的应用程序将被完全卸载,现在您可以尝试毫无问题地安装新版本。希望这个能对您有所帮助

从下面的链接检查我的解决方案。

链接1

希望对您有帮助。


他们怎么会那样做呢?工作顺便说一句谢谢。
亚当·瓦赫吉

2
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会无效。
SOFe

老兄,非常感谢您,这个错误花了我一周的时间才弄清楚
DiegoVinícius18年

很高兴,帮了您!!@DiegoVinícius
拉古斯瓦米纳坦

66

对于当前Updated Android Studio 2.3用户来说,这个答案非常适合您,因为随着Android Studio的巨大进步,如今人们几乎不使用Eclipse来进行Android开发。

因此,请按照这种方式创建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

14
选择签名V1做到了
Meanman '17

您节省了我很多时间
curiousMind

为我工作。省时间 。谢谢
YeeKhin

5
同时检查V1V2是解决方案!
Alex Jolig

1
检查V1为我解决了这个问题。以前,仅检查V2。
BluJ IT

51

选择Signature Version v1和v2都为我解决了问题....尝试一下在此处输入图片说明


4
这正是我的问题。问题仍然是为什么还要标记V1(罐子签名)?Google如何期望我们知道这一点?
A.Alqadomi '17

这不是强制性的。如果可能,您应该同时选中这两个复选框,但是如果新的V2签名机制给您带来了问题,则可以在遇到问题时仅对这两个复选框进行检查。
Shubhamhackz

43

只要我从Build> Build APK生成了我的apk,同样的事情发生在我身上。我可以多次安装和卸载apk,而不会出现任何问题,但是,如果生成了Build> Generate Signed APK,当我将apk传递到手机并尝试安装时,它只允许我一个一次,同一个人发出了以下消息:

在此处输入图片说明

直到那时,如果我选择“以任何方式安装”,一切都很好,但是如果我卸载了该应用程序并想重新安装它(可能的情况),发生了什么事情:

在此处输入图片说明

因此我通过禁用播放保护解决了该问题,该功能已在Google Play中实现>在菜单>播放保护>搜索安全威胁(已禁用)中实现。

在此处输入图片说明

在此处输入图片说明


这个解决方案对我有用。Google +1的另一项更改
准备就绪,Android

你救了我的命!
akcoban

您能告诉我们为什么会这样吗?我做错了什么导致此问题得以解决?
sparkhead95 '19

16

当具有相同软件包的应用程序已经安装在同一设备上时,显示“未安装应用程序”。只需删除您用于测试目的的第一个应用程序,然后再进行签名。这将起作用。干杯!


8
是的,我知道,但是以前没有安装。
亚当·瓦赫吉

6
如何在不删除当前应用的情况下安装具有更高版本的APK?
user7856586

12

同时选择签名版本v1和v2将解决此问题

在此处输入图片说明

v1方案

可以使用命令行jarsigner工具或直接通过java.security API对JAR文件进行签名。如果JAR文件由jarsigner工具签名,则每个文件条目(包括META-INF目录中与签名无关的文件)都将被签名。对于在签名的JAR文件中签名的每个文件条目,只要清单中不存在该清单条目,就会为其创建一个单独的清单条目

V2方案

v1签名不能保护APK的某些部分,例如ZIP元数据。APK验证程序需要处理大量不受信任(尚未验证)的数据结构,然后丢弃签名未涵盖的数据。这提供了相当大的攻击面。此外,APK验证程序必须解压缩所有压缩的条目,从而消耗更多的时间和内存。为了解决这些问题,Android 7.0引入了APK签名方案v2

默认情况下,Android Studio 2.2和适用于Gradle 2.2的Android插件使用APK签名方案v2和使用JAR签名的传统签名方案对您的应用进行签名。

建议使用APK签名方案v2,但这不是强制性的。 请查看详细信息


10

在Android Studio 3.0及更高版本中

如上所述这里

注意:“运行”按钮会使用testOnly =“ true”构建一个APK,这意味着该APK仅可通过adb(Android Studio使用的adb)安装。如果您想要人们无需adb即可安装的可调试APK,请选择您的调试版本,然后点击构建包/ APK>构建APK。

添加android:testOnly="false"内部应用程序标签在AndroidManifest.xml

参考:https : //commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html


7

在shubham soni答案上面对我有用,实际上它发生在android版本> = 5.0。上面,您能够安装就可以在创建apk时使用它在此处输入图片说明...


1
为什么这个重复的答案?
sziraqui

@sziraqui:Subhankar soni尚未提及为什么“无法将签名的apk手动安装到设备上,出现错误“未安装应用”。什么错在我的答案。对于Android版本<= 5.0,你将能够安装相同的apk无标记两个签名版本复选框?
阿米特·拉吉

您的答案只是在原始答案上增加了一点,因此应该是一条评论。如果您将此作为答案发布,则应添加某种形式的引用以支持您对android 5.0的主张。如果您的问题实际上与android ide而不是android版本有关怎么办?
sziraqui

谢谢,答案中的图片使我有了尝试同时启用V1和V2签名的想法。以前我只使用V1
jasxir

6

在这里我解决了这个问题

此问题背后的原因是,电话中已经存在一个具有相同程序包名称的应用程序,但是您无法在电话菜单中找到它(您已经卸载了,但实际上仍在您的电话中)。

要查看该应用程序,请转到电话SETTINGS- > APPS。在那里您可以看到该应用程序,但在其中可能会禁用UNINSTALL按钮。单击菜单溢出按钮以查看所有用户的卸载

对所有用户执行卸载后,我已经成功安装了签名的apk。您还可以使用adb从手机上卸载应用程序。

adb uninstall package name

除此之外, 如果您的手机支持多个用户,请检查是否没有为其他用户安装相应的应用程序。如果已为其他人安装,请先卸载以前的应用,然后重试


4

这是一个很老的问题,但是我的解决方案是更改build.gradle中的versionCode(增加)




3

那可能是因为您从外部SD卡存储中运行APK文件。只需将APK文件复制到内部storagem即可解决


1

由于您选择了签名版本,因此可能会发生这种情况。在某些电话上,如果将签名版本选择为V2,则会发生安装错误。因此,如果发生这种情况,请尝试选择V1,它肯定会起作用。


1

我今天也遇到了同样的问题,我记得我用“新的” Google Play签名对apk进行了签名:


在此处输入图片说明


确保您是否使用Google Play签名对应用程序进行了签名。

如果您这样做:

  • 通过将apk上传到Google控制台来安装更新(就像通常在更新应用程序时一样):

在此处输入图片说明


  • 成功上传后,打开 Artifact library在菜单中。
  • 您将看到刚刚上传的apk。
  • 按下载按钮,然后选择Download derived APK

现在,您将能够安装apk。


0

如果您的Android Studio版本大于3.0

看起来我们无法从build-> output-> apk文件夹在设备上运行后直接使用apk。

升级到android studio 3.0后,您需要转到Build-> Build Apk(s)然后从build-> output-> apk-> debug复制apk

在此处输入图片说明


这个问题的标题- "Cannot install signed apk"。您是指调试apk。
KRK

0

File> Project Structure> Build Variants> Select release>确保'Signing Config'不为空>如果从下拉窗口中选择 $signingConfigs.release

我使用Android Studio 3.1.4进行了此操作,它使我可以按照创建发行版本apk和发行密钥并将信息添加到应用程序gradle的上述所有步骤来创建发行版本apk。干杯!


$signingConfigs.release不可用,仅$signingConfigs.debug可用。
KRK

然后转到构建>生成APK>选择APK并按照说明进行操作。
Treewallie

0

我在Android应用程序中遇到了同样的问题。我只是更新了一些库,然后创建了Sign APK。现在它的工作。


0

如果为您的应用程序启用了“ 通过Google Play进行应用程序签名”,则无需卸载Google Play版本,请按照以下步骤操作:
1.使用释放键制作应用程序的签名版本
2.转到Google Play开发者控制台
3。使用您的应用程序的新签名版本创建一个封闭的发行版本(alpha或beta版本)。您
现在可以下载由Google Play的App Signing签名的apk ,选择派生的APK在此处输入图片说明

  1. 安装下载的派生APK

原因是如果您从Play商店安装了应用,并且想要在手机中测试新发行版本的应用(由Android Studio生成),则Google Play的应用签名会使用不同的密钥对发布的应用进行签名。发生这种情况的原因是,旧版本和新版本使用两个不同的密钥签名:一个使用Google Play应用签名,另一个使用您的密钥。



0

请卸载设备中的调试应用,或增加版本代码以解决此问题


0

以我为例,我尝试测试安装签名的APK,并且设备上的当前安装版本未签名(直接从Android Studio构建调试版本)


0

很明显,但仍然很难为我找到答案,

请检查您的移动设备是否有足够的空间来安装apk。而且还不满

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.