我更改了包名,更改了应用程序名称,但安装程序仍会覆盖先前版本。

4
为了诊断问题,我正在尝试在 Android 设备上安装两个略有不同的相同应用程序版本。为了实现这一目标,我复制了该项目并更改了以下内容:
1. 项目名称 2. 包名称 3. 应用程序名称(如在 AndroidManifest.xml 中应用程序的 "android:label" 中所示)
然而,当我安装修改后的应用程序时,它会覆盖旧的应用程序(具有不同的项目名称、包名称和应用程序名称)。显然,我还漏掉了其他需要更改的内容,才能让这两个项目在我的 Android 手机上并存。
那么,这个“其他内容”是什么?

1
对我来说,只需更改包名称就足以安装两个相同的应用程序,这很奇怪。 - ernazm
1
你可以尝试在Eclipse中进行“清理”项目,然后再安装它。这将重新生成R.java文件,可能会解决问题。 - pecka85
3
你有没有在AndroidManifest中更改包名? - slund
@slund,我改变了前缀activity的android:name属性的包名,但是我忘记改变<manifest>中的“package”属性。请看我的回复@Stealth Rabbi。+1也送给你。 :) - Android Eve
2个回答

7
我认为您需要在Android清单中更改包名称文本。如果您在项目的eclipse属性菜单中更改包,则不会更改实际的AndroidManifest.xml。 编辑: AndroidManifest.xml中标识的包名称是应用程序的唯一标识符,但我认为可能并不一定引用您的Android项目源代码的根包。我认为最好将它们视为相同的最佳做法,但我可以看到您可以通过更改清单应用程序包而不更改基础源代码来轻松发布应用程序的备用版本(即付费版与免费版)。并不是说这是好的做法,但似乎是一个可能性。这里有更多信息:

http://blog.javia.org/android-package-name/


哇,你说得对。我已经在整个项目(所有.java文件和布局XML文件)中更改了包名称,但是两个项目中AndroidManifest.xml中的包名称仍然相同。这一定是原因。我会测试并回报结果。谢谢! - Android Eve
您的编辑和链接对我非常有启发。我也能够确认Android包名是问题的根源。答案已被接受。 - Android Eve
我有一个重复的项目,其<manifest package="_">值不同,当安装到模拟器时,它正在被原始项目覆盖和被覆盖。 - Gimme the 411
@Gimmethe411,如果您有一个不同的清单包,它怎么会成为重复项目呢?“被覆盖”的意思是什么? - Stealth Rabbi
@StealthRabbi 我的意思是在复制清单包后更改了它,但我无法同时在设备上安装两个应用程序(因为每次安装一个应用程序时,它都会覆盖另一个应用程序)。但是在更改build.gradle applicationId字段之后,我可以在设备上安装两个应用程序。因此,我认为build.gradle applicationId是正确要更改的内容,而不是清单包。 - Gimme the 411

2

我有一个具有不同清单包="__"值的重复项目,当安装到模拟器时,它会覆盖和被原始项目覆盖,因此其他答案是不正确的。

更改的正确字段在build.gradle中:

android {
    defaultConfig {
        applicationId "__" <--- change this value

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接