我正在开发两个共享大部分理论代码的 Android 应用程序(基本版和专业版)。
我从专业版开始,给它一个包名,比如 com.example.proapp。
对于 Basic 版,我在 git 中创建了 Pro 版的一个分支,并创建了 Eclipse 工作区的副本。随着 Basic 分支处于活动状态,我在 Eclipse 中打开了 Basic 工作区,然后:
- 改变
app_name
了strings.xml
。 - 更改了包名
AndroidManifest.xml
。(android:title
应用程序及其主 Activity 的属性都指向@string/app_name
。) - 使用 Refactor,将 Java 包名称从 更改
com.example.pro
为com.example.basic
. - 替换了应用程序图标。
现在,当我启动应用程序时,一切看起来都很好。新的标题和图标就在那里。
但是,当我在 Android 上进入“管理应用程序”时,Basic 应用程序会显示 Pro 应用程序的图标和标题字符串。(如果我同时安装两者,我会得到 Pro 应用程序的两个条目;只有在点击其中一个之后,我才能通过查看包名称来查看哪个条目。)
这里有什么问题?如何让我的 Basic 应用程序以正确的名称和正确的图标显示?
更新:我尝试从“基本”分支创建第二个 git 存储库并将代码导入新的 Eclipse 工作区。我从手机上卸载了我的应用程序的两种风格,并加入了新版本。行为仍然相同 - 启动器和操作栏显示正确的图标和应用程序标题,而管理应用程序显示“Pro”图标和标题。
这个“亡灵”图标和标题从何而来?我们现在可以排除 Eclipse 工作区,也可以排除工作副本中的构建碎片。
看起来 Android 保留了已安装应用程序数据的缓存,甚至在卸载之后,并从那里恢复应用程序数据。但这只是猜测……有人能解释一下吗?
另外,为什么 Android 认为这两个 apk 是同一个应用程序?除了包名之外,APK 中是否有任何内部标识符?
更新 2:今天我在管理应用程序中获得了基本版本(未安装 Pro 版本)的正确名称和图标,尽管自上次查看以来我没有更改任何内容。唯一的问题是管理应用程序活动可能在此期间被杀死并重新启动。似乎我在管理应用程序中触发了一个错误......但是是什么触发了它?