无法安装我自己生成的 apk
Posted
技术标签:
【中文标题】无法安装我自己生成的 apk【英文标题】:Can not install my own generated apk 【发布时间】:2015-12-20 15:52:29 【问题描述】:我更新了我的应用并在我的设备上对其进行了测试。如果我通过 eclipse 中的运行按钮测试应用程序,一切正常,但如果我将其导出到 apk 并尝试安装 apk,它会失败。
没有错误代码或其他任何内容,它只是表示该应用尚未安装。
知道为什么会这样吗?我只在我的应用程序中更改了一些东西:我从我的应用程序中删除了 basegameutils 库并迁移到没有 basegameutils 的新 api。就是这样(除了一些错误修正,但这不是原因)。
我确实已经重新启动了 eclipse 并多次清理了所有项目。
目标 sdk 是 22,我正在使用最新的系统映像等用于该 api 级别(我的 divce 是运行 5.1.1 的股票 nexus 6)。我还将构建工具从 22.0.1 更新到 23.0.1 并删除了 22 版本。是这个原因吗?
我也尝试在开发控制台上传apk,没有错误。
感谢您的帮助。
编辑:
logcat 输出显示签名与之前安装的版本不匹配。
如果我尝试通过 Play 商店安装当前的实时版本,还会出现一条错误消息,指出我无法安装此应用程序,因为另一个用户已在此设备上安装了不兼容的版本(但我没有安装它,我也没有设备上有多个用户)。
如果我进入设置中的应用程序菜单,我的应用程序会显示在列表底部,但有一条说明没有为用户安装该应用程序。如果我点击它,所有按钮都无法点击(所以我无法卸载它)。
发生了什么?
【问题讨论】:
还有 logcat 输出 @ IntelliJ Amiya :“我通过 Eclipse 中的运行按钮测试应用程序”我认为他正在使用 Eclipse..!! 你是如何生成apk的? 我更新了我的帖子。我希望这有帮助。我通过eclipse中的导出功能生成我的apk。 您的问题似乎与此有关:***.com/questions/32718044/… 【参考方案1】:对我来说,选择 Signature Version v1 和 v2 都解决了问题
【讨论】:
为我工作 +1 我也是+1。谢谢 为我工作 +1 也为我工作,谢谢 为我工作 +1【参考方案2】:您的签名已更改,因此如您所述,您必须卸载以前的版本。您尝试从设备 UI 卸载,但失败 - 请从命令行尝试:
adb 卸载 your_package_name
在 Nexus 设备上看到,偶尔只有命令行卸载工作。
【讨论】:
我找到了一个解决方案,但您的解决方案可能也会起作用(不过我不知道)。谢谢! +2 TanX 很多,节省我的一天 :)【参考方案3】:我找到了解决方案,但我仍然不知道是什么导致了问题。
我的应用程序仍然安装在我设备上的某个地方,即使它没有出现在应用程序抽屉中,并且 Play 商店告诉我同样的情况。在设置/应用程序菜单中,我的应用程序仍然存在(正如我在原始帖子的编辑中提到的),所以我点击了它。如果您单击菜单按钮,您可以为所有成功的用户选择 unisntall。现在我可以再次安装我的 apk。
我不知道这是怎么发生的,但是你去吧,我希望这会有所帮助。
编辑:
我和这个人有同样的问题。那里接受的答案比我格式不佳的文本要好得多;)
"You cannot install this app because another user has already installed an incompatible version on this device"
【讨论】:
如果您在单个设备上拥有多个帐户,则可能会出现这种情况。如果您卸载应用程序,则它不适用于一个(或每个)帐户,但仍存储在内存中。如果您尝试安装使用不同密钥签名的应用程序,则会引发错误。 android Studio 在调试时会为所有用户安装应用。当安装失败时,我会期待更好的错误消息。【参考方案4】:我遇到了同样的问题,我通过这种方式解决了,For Current Updated Android Studio 2.3
Build
> 生成Signed apk
。
创建Keystore path
。
输入Password, alias, key password
。
Build type
相应地选择(例如,在 Playstore 中发布使用 release
)。
Signature Version
同时选中 V1
和 V2
复选框。
Finsih
。
从 explorer
转到 apk 并将其用于您的 playstore
或在设备中作为签名和认证的 apk 文件。
【讨论】:
这是 APK 未签名的情况,因此具有固有功能的设备会拒绝此类 APK。但这里的问题是关于已签名但仍然无法安装的 APK,只是因为人们之前曾尝试安装它,但由于卸载不完整而留下了残留物。【参考方案5】:对我来说,解决方案是在设备上禁用 Play Protect。
【讨论】:
对我来说,Android 8.0 (Oreo) 有这个问题。【参考方案6】:你不能直接在你的安卓设备上运行签名的apk。
如果您想运行您的 apk,请按照以下步骤操作:
1) Go to your device settings
2) In setting you find applications
3) In application checked unknown sources
这将使您无需从 Play 商店下载即可运行已签名的 apk。
或 试试这个链接:
"You cannot install this app because another user has already installed an incompatible version on this device"
【讨论】:
我已经这样做了。我能够运行我的 apk 多年,今天它刚刚停止工作。 好吧,你改变了你的密钥库吗? 不,我没有。正如我所说,我可以毫无错误地将 apk 上传到开发控制台。不过我找到了解决方案。 试试这个链接:***.com/questions/28853250/…【参考方案7】:问题是因为您有一个测试应用版本。因此,您并没有真正升级应用程序!这是两个不同的应用程序。您必须先卸载以前的版本(测试),才能安装应用的发布(签名)版本。
【讨论】:
【参考方案8】:我今天遇到了这个问题,在这里尝试了一些建议,这就是我解决问题的方法:我清除了手机的缓存/垃圾文件,还卸载了应用程序的测试版本及其 APK,然后重新安装了新的APK。在担心之前先试试这个。 ?
【讨论】:
【参考方案9】:我得到了保存错误,以防有人面临这个问题。对我来说,这是因为我在手机上为同一个应用程序有多个项目。您需要从手机中删除旧版本的应用。
【讨论】:
【参考方案10】:如果您在生成签名 apk 之前有两个选项(V1(jar 签名)和 V2(完整 APK 签名))。您现在应该使用 V1 jar 签名,因为没有向后兼容性,并且所有版本 https://developer.android.com/about/versions/nougat/android-7.0#apk_signature_v2
【讨论】:
【参考方案11】:在我的例子中,是 build.gradle 中的 proguardFiles 路径导致了这个问题
【讨论】:
【参考方案12】:目前 PlayStore 会定期检查应用和设备是否存在有害行为。手动安装签名的 APK 被视为异常行为,因此是预防。 所以关闭临时播放保护功能,您的安装将发挥魅力!
-
step one - open play store and select play protect
step two - click play protection setting button
step three - disable
step four - close and install your APK manually
【讨论】:
以上是关于无法安装我自己生成的 apk的主要内容,如果未能解决你的问题,请参考以下文章