2017-10-19 222 views
0

因此,我在一周前发布的Play商店中有一个应用程序。我已经做了很多工作,因为我基本上会重新设计它。安装apk文件时出现“应用程序未安装”消息

当我第一次发布应用程序时,我把它放在应用程序商店名为“名字的应用程序”(显然不是正确的名称)。我现在有一个更新,准备发布很多更改,其中一个变化是应用程序名称现在是“应用程序的第二个名称”。它都在同一个软件包中,我只是使用Manifest来更改名称。

虽然进行测试,但我遇到问题。目前在我自己的手机上,我已安装Play商店中当前的应用版本。

我使用Android Studio生成了一个签名的APK(全部使用相同的设置和密钥密码等)。然后,我将该签名的apk放在手机上进行测试,当我尝试安装它时,我收到“应用程序未安装”消息。


事情我已经尝试:

  • 卸载以前的APK,然后安装新版本。如果我先卸载Play商店版本,然后安装较新的已签名APK版本,则安装正常。但问题在于我失去了Play Store版本中的数据。我不能那样。
  • 更改build.gradle中的“versionCode”和“versionName”数字。我确定这两个数字都高于Play商店版本的数字,但我仍然得到相同的“App not installed”消息。
  • 确保生成签名APK时的设置相同。所有设置都完全相同。签名版本复选框也都被检查过,因为它们与以前的所有版本一样。

任何人有任何想法可能是怎么回事?我真的想发布这个更新,但是如果我只是将这个已签名的apk上传到商店,那么每个人都会遇到同样的问题,并且他们将被迫卸载它们当前的版本(导致数据丢失) )。

+0

你确定你从来没有安装与不同的包结构相同的应用程序?通常,当您安装具有相同名称但不同包装结构的新应用程序时,会弹出此类消息。因此,Android工作室试图运行'adb shell卸载'current.package.name''并且无法继续。为了解决这个问题,你需要从'adb'运行卸载所有包结构。# – deathangel908

+0

@ deathangel908通过不同的包结构,这是否意味着应用程序内的不同活动?因为我确实在应用中添加了一些新的活动。目前,我手机上唯一的应用版本是Play商店中的应用版本。 – andrdoiddev

+0

不,它只包含你在'manifest.xml'中指定的包结构。 – deathangel908

回答

1

问题似乎是,您尝试安装具有相同软件包名称但密钥不同并导致冲突的APK。如果包名和密钥签名都相同,那么Android只会将App视为相同。

即使您在每次创建密钥时都使用相同的设置和密码,密钥也是唯一的唯一的密钥已创建,并且它始终与您在Play商店版本中使用的密钥不同。

安装APK的唯一方法是卸载Play商店版本。

而且这样做的目的是强调保持Play商店中使用的密钥的重要性,如果您失去它,您将无法上传新更新。

UPDATE

如果你有“谷歌Play应用签名”为您激活应用程序,当用户安装来自Play商店应用程序所使用的密钥比你用来上传发布到一个不同播放控制台。

https://support.google.com/googleplay/android-developer/answer/7384423?hl=en

+0

但他们的关键是一样的。我使用完全相同的密钥存储路径,当我签署原始版本该app_key.jks文件也是同一日期修改,因此它一直没有改变。 – andrdoiddev

+0

已为此应用启用Google Play应用签名。如果密钥不同,我该如何在实际设备上测试应用程序?我的意思是,应用程序可以使用所有的模拟器,所以它不应该成为问题。尽管我通过该链接进行了阅读,但这让我只希望我没有启用Google Play应用签名(您甚至无法禁用)。所以我想现在我的问题是,如果我将这个新版本的已签名的apk上传到Play商店,人们是否必须先卸载以前的版本? – andrdoiddev

+0

不,人们将从Play Store安装的版本与以前的版本具有相同的版本,但与用于上传的版本不同。我知道测试家庭/工作变化的唯一方法是卸载Play商店版本。 –

0

你有一个偶然的机会改变了最低SDK版本或类似的东西?我有类似的问题。我在PlayStore上有一款应用,我尝试使用与PlayStore版本具有相同签名的APK进行升级,但使用了不同的最低SDK版本。当我尝试安装时,出现'app not installed'错误。然后我将这个APK上传到PlayStore上。在我的设备上,PlayStore上的应用程序现在显示“卸载”和“打开”两个选项。由于您的冲突,用户必须先卸载该应用并重新安装。由于冲突,将不会有'更新'选项。希望这有助于:)