重命名后旧的Android应用程序名称不会消失

时间:2013-08-30 23:44:17

标签: android eclipse

我正在开发两个Android应用程序,它们共享大部分代码(基本版和专业版)。

我从专业版开始,给它一个包名,如com.example.proapp。

对于Basic版本,我在git中创建了Pro版本的一个分支,并创建了Eclipse工作区的副本。在Basic分支处于活动状态时,我在Eclipse中打开了Basic工作区,并且:

  • 更改了app_name中的strings.xml
  • 更改了AndroidManifest.xml中的包名称。 (应用程序及其主要活动的android:title属性指向@string/app_name。)
  • 使用Refactor,将Java包名称从com.example.pro更改为com.example.basic
  • 替换了应用图标。

现在,当我启动应用程序时,一切看起来都很好。那里有新的标题和图标。

但是,当我在Android上进入“管理应用”时,Basic应用会显示Pro应用的图标和标题字符串。 (如果我同时安装了两个,我会获得Pro应用程序的两个条目;只有在点击其中一个之后,我才会看到哪个是通过查看包名称。)

这里有什么问题?如何让我的Basic应用程序以其正确的名称和正确的图标显示?

更新:我尝试从“基本”分支创建第二个git存储库,并将代码导入新的Eclipse工作区。我从手机上卸下了我的应用程序的两种风格,然后放入了新的版本中。行为仍然相同 - 启动器和操作栏显示正确的图标和应用程序标题,而管理应用程序显示“专业”图标和标题。

这个“亡灵”图标和标题来自哪里?我们现在可以排除Eclipse工作区,我们可以在工作副本中排除构建碎片。

几乎看起来Android会保留已安装的应用数据的缓存,甚至超出卸载范围,并从那里恢复应用数据。但这只是猜测......任何人都可以对此有所了解吗?

另外,为什么Android认为这两个apks是同一个应用程序?除了包名称之外,APK中是否有内部标识符?

更新2:今天我在管理应用中获得了Basic版本(Pro one未安装)的正确名称和图标,但自从我上次查看以来,我没有更改任何内容。唯一的问题是管理应用程序活动可能在此期间被杀死并重新启动。似乎我在触发管理应用程序中的错误...但是什么触发了它?

2 个答案:

答案 0 :(得分:1)

我认为您需要在android:label上使用<application>为该应用指定一个不同的名称。另外,请确保清理项目以显示资源更改。

答案 1 :(得分:0)

我想我明白了。

阅读Android project rename - won't launch now后,我做了以下事情:

  • 从设备
  • 中删除了所有以前的版本
  • 从专业版
  • 创建了一个新分支
  • 将代码导入新的Eclipse工作区
  • 使用Android工具&gt;重命名该软件包从菜单中重命名应用程序包
  • 使用Refactor
  • 更改了src下的Java包名称
  • 根据基本版
  • 的需要调整字符串和图标
  • 清理项目
  • 推出基本版
  • 关闭Eclipse并切换回专业分支
  • 使用Pro工作区启动Eclipse
  • 清理项目
  • 推出专业版

瞧!在Nexus S和VirtualBox中,我在Manage Apps中获得了两个不同名称和不同图标的应用程序。

经验教训:

  • 始终使用Eclipse命令重命名应用程序或程序包。更改清单文件中的字符串是不够的。显然Eclipse除了更新清单之外还做了一些更改,可能在工作区文件夹中。
  • 在两个不同分支的构建之间进行清理。否则你会(显然 - 我尝试过)从过去的构建中携带碎片,导致资源在分支之间混淆,最终构建一些东西与你的意图完全不同。