我正在开发两个共享绝大多数理论代码的Android应用程序(某种Basic和Pro版本)。旧的Android应用程序名称在重命名后不会消失
我开始使用专业版,给它一个像com.example.proapp这样的包名。
对于Basic版本,我在git中创建了Pro版本的一个分支,并创建了一个Eclipse工作区的副本。在基本分支活动的情况下,我在Eclipse中打开了基本工作区,并且:
- 更改
app_name
的strings.xml
。 - 将包名更改为
AndroidManifest.xml
。 (应用程序及其主要Activity的android:title
属性指向@string/app_name
。) - 使用Refactor,将Java包名称从
com.example.pro
更改为com.example.basic
。 - 取代了应用程序图标。
现在,当我启动应用程序时,一切都看起来很好。新的标题和图标在那里。
但是,当我进入Android的“管理应用程序”时,基本应用程序会显示Pro应用程序的图标和标题字符串。 (如果我安装了两个,我会为Pro应用程序获取两个条目;只有在点击其中一个条目后,我才能看到包名称。)
这里有什么问题?如何使我的基本应用程序以其正确的名称和正确的图标显示?
更新:我试图从“基本”分支创建第二个git存储库,并将代码导入新的Eclipse工作区。我从我的手机中卸载了我的应用程序的两个版本,然后投入新版本。行为仍然相同 - 启动器和操作栏显示正确的图标和应用标题,而管理应用显示“专业”图标和标题。
这个“不死”图标和标题从哪里来?我们现在可以排除Eclipse工作区,并且我们可以排除工作副本中的构建碎片。
它几乎看起来像Android保持已安装的应用程序数据缓存,甚至超越卸载,并从那里复活应用程序数据。但这只是猜测......任何人都可以阐明这一点吗?
此外,为什么Android相信两个apks是相同的应用程序? APK中是否有任何内部标识符,除了包名?
更新2:今天,我在管理应用程序中获得了基本版本(Pro版本未安装)的正确名称和图标,但自从上次查看后我没有更改任何内容。唯一的问题是,管理应用程序活动可能在此期间被杀死并重新启动。似乎我在管理应用程序中触发了一个错误...但触发它的是什么?
对不起,我有一个错字(现在更正)。 ''和主Activity都有'android:label =“@ string/app_name”'。奇怪的是,主要活动和启动器图标有正确的标题,它只是在管理应用程序中,旧标题仍然出现,尽管我没有在代码中看到它。图标同样适用:启动器和活动使用正确的图标,而管理应用使用旧图标,但它绝对不在'res /'文件夹结构中。我几次清理了这个项目,都无济于事...... –
user149408
如果你有不同的手机或模拟器,请尝试在那里安装。 – Varun
我在VirtualBox上的Android x86上尝试过。在那里,当我安装一个应用程序,它取代了另一个。 APK中的某些东西似乎告诉Android,这两个包是相同的。 – user149408