是否可以在 Google Play 上更改 Android 应用程序的包名称?
Posted
技术标签:
【中文标题】是否可以在 Google Play 上更改 Android 应用程序的包名称?【英文标题】:Is it possible to change the package name of an Android app on Google Play? 【发布时间】:2013-07-09 01:41:22 【问题描述】:我想知道更改 Google Play 上 android 应用的实际包名称是否在技术上可行,而不是是否容易。我所说的包名称是指将显示在 URL 中的名称。请,谁能告诉我为什么这是/不可能? 谢谢!
【问题讨论】:
将在 URL 中显示的名称.. 那是什么?举个例子 【参考方案1】:完整指南: https://developer.android.com/studio/build/application-id.html
根据 Android 官方博客: https://android-developers.googleblog.com/2011/06/things-that-cannot-change.html
我们可以这样说:
如果清单包名称发生了变化,新的应用程序将 与旧应用程序一起安装,因此它们都在 用户的设备。
如果签名证书发生更改,请尝试安装新的 设备上的应用程序将失败,直到旧版本 已卸载。
根据 Google 应用更新检查清单: https://support.google.com/googleplay/android-developer/answer/113476?hl=en
更新您的应用
准备您的 APK
当您准备好对 APK 进行更改时,请务必同时更新应用的版本代码,以便现有用户能够收到您的更新。
使用以下清单确保您的新 APK 已准备好更新现有用户:
更新后的 APK 包名需与当前版本一致。 版本代码需要大于当前版本。详细了解应用版本控制。 更新后的 APK 需要使用与当前版本相同的签名进行签名。要验证您的 APK 是否使用与之前版本相同的认证,您可以在两个 APK 上运行以下命令并比较结果:
$ jarsigner -verify -verbose -certs my_application.apk
如果结果相同,则您使用的是相同的密钥并准备继续。如果结果不同,则需要使用正确的密钥对 APK 重新签名。
了解有关签署您的应用程序的更多信息
上传您的 APK 一旦您的 APK 准备就绪,您就可以创建一个新版本。
【讨论】:
【参考方案2】:永远,你不能这样做,因为包名是你的应用程序的唯一名称标识符.....
【讨论】:
【参考方案3】:不,您不能更改包名称,除非您可以将其作为新应用发布到 Play 商店:
一旦您在其清单包名称下发布您的应用程序,这将永远是该应用程序的唯一标识。切换到不同的名称会产生一个全新的应用程序,它不能作为现有应用程序的更新安装。 Android 手册也在这里确认了这一点:
注意:一旦您发布了您的应用程序,您将无法更改包名称。包名定义了你的应用程序的身份,所以如果你改变它,那么它被认为是一个不同的应用程序,以前版本的用户不能更新到新版本。 如果您同意将应用的新版本作为一个全新的实体发布,您当然可以这样做 - 只需从 Play 商店中删除旧应用(如果需要)并发布具有不同包名称的新应用。
【讨论】:
【参考方案4】:据我所知,您可以做的就是“淘汰”您以前的应用,并将所有用户重定向到您的新应用。 Google 不支持此过程(tsk...tsk...),但可以分四步实施:
更改当前应用程序以向用户显示有关升级的消息并将他们重定向到新的应用程序列表。 可能全屏消息会带有一些友好的文本。理想情况下,可以远程触发此消息,但也可以使用截止日期。 (但那对你来说将是一个艰难的最后期限,所以要小心......;))
将修改后的旧应用程序作为升级版本发布,可能还包含一些功能升级/错误修复,以向用户“增加交易”。仍然不能保证所有用户都会升级,但可能大多数用户都会升级。
使用更新后的包名称准备新应用并将其上传到商店,然后在旧应用中触发消息(或等到它过期,如果您愿意的话)。
在 Play 商店中取消发布旧应用程序以避免任何新安装。取消发布应用并不意味着已安装该应用的用户将无法再访问该应用,但至少潜在的新用户不会在市场上找到该应用。
不理想,可能会令用户烦恼,有时甚至由于应用的状态/可能性而无法实施。但是由于谷歌让我们别无选择,这是将旧应用程序的用户迁移到“新”应用程序的唯一方法(即使它不是真正的新应用程序)。 更不用说,如果您无法访问旧应用程序的源代码和代码签名详细信息,那么您所能做的就是希望他的用户会注意到新应用程序......
如果有人想出了更好的方法:请告诉。
【讨论】:
虽然这是安装新应用程序的最佳方法,但必须记住旧应用程序仍将驻留在设备上 - 因为这不是真正的升级,而是新安装(除非用户手动卸载前一个)。因此,您将在设备上拥有旧应用程序和新应用程序,并且可能使用相同的启动器图标 - 让用户感到困惑 - 旧应用程序与新应用程序。 你是对的,很遗憾,作为新应用程序安装过程的一部分,无法删除旧应用程序。但是,可能会检测到旧应用程序的存在并警告用户将其删除。这可以在新应用启动时或在安装后事件处理程序 (developer.android.com/reference/android/content/…) 中完成。 此外,旧应用程序可以检测到新应用程序的存在并简单地显示一个 toast 左右,然后启动新应用程序并退出。【参考方案5】:来自黛安·哈克伯恩:
无法改变的事情:
其中最明显和可见的是“清单包名称”,这是您在其 AndroidManifest.xml 中为应用程序指定的唯一名称。该名称使用 Java 语言风格的命名约定,互联网域所有权有助于避免名称冲突。例如,由于 Google 拥有“google.com”域,因此我们所有应用程序的清单包名称都应以“com.google”开头。为避免与其他开发人员发生冲突,开发人员必须遵守此约定。
一旦您在其清单包名称下发布您的应用程序,这将永远是该应用程序的唯一标识。切换到其他名称会生成一个全新的应用程序,该应用程序无法作为现有应用程序的更新安装。
更多关于你不能改变的事情here
关于您对来自 Google Play 的 URL 的问题,在那里定义的包链接到您在 AndroidManifest.xml 文件中拥有的应用程序的完全限定包。详细了解 Google Play 的链接格式here。
【讨论】:
值得一提,因为我四处寻找这个 - 你可以更改包名称java中实际包的,基本上除了清单中的其他任何地方。清单中的那个或多或少独立于其他任何地方的那个。 @lahwran 当它们不匹配时,我遇到了正确构建 Android Studio 的问题 - 当它们匹配时问题就消失了。 有趣,我想知道这是否已经改变。如果它曾经使它们与众不同但从未得到支持,我不会感到惊讶。 @Voicu 如果我们在 beta 模式下上传第一个版本并且不想在发布模式下更改包,是否可以更改包名称 那么如果我有一个付费版本和一个具有相同包名的免费版本会发生什么?两者都在 Play 商店中作为不同的应用程序【参考方案6】:不,你不能只是改变它,你必须上传一个新的包作为一个新的应用程序。看看谷歌的appTalk
,它的名字改成了Hangouts
,但是包名还是com.google.android.talk
。因为它不可行:) 干杯。
【讨论】:
你会认为谷歌自己会意识到这个问题 play store 上存在的andorid 应用包名中的单个字母是否可以从大写变为小写?【参考方案7】:如果您指的是 com.example.app,不,我知道您不能将其视为新应用
【讨论】:
以上是关于是否可以在 Google Play 上更改 Android 应用程序的包名称?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在安装在 Google Play 商店之外的应用上使用 Google Play 服务吗?
Maps SDK for Android v.3.0.0 BETA "是否可以在没有Google Play服务的设备上运行?