2013-08-30 26 views
3

我正在开发两个共享绝大多数理论代码的Android应用程序(某种Basic和Pro版本)。旧的Android应用程序名称在重命名后不会消失

我开始使用专业版,给它一个像com.example.proapp这样的包名。

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

  • 更改app_namestrings.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版本未安装)的正确名称和图标,但自从上次查看后我没有更改任何内容。唯一的问题是,管理应用程序活动可能在此期间被杀死并重新启动。似乎我在管理应用程序中触发了一个错误...但触发它的是什么?

回答

0

我想我明白了。

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

  • 删除从设备
  • 所有先前版本的Pro版本
  • 进口的代码到一个新的Eclipse工作区
  • 创建一个新的分支使用Android工具>重命名应用程序包从菜单重命名包装
  • 更改Ja使用重构src下VA包名
  • 适应所必需的基本版本
  • 清理项目
  • 推出基本型
  • 关闭Eclipse和切换回临分支
  • 推出的Eclipse与Pro字符串和图标工作区
  • 已清理项目
  • 已推出专业版

而且瞧!在我的Nexus S和VirtualBox中,我在管理应用程序中获得两个不同名称,不同图标的应用程序。

教训:

  • 始终使用Eclipse命令来重命名的应用程序或包。更改清单文件中的字符串是不够的。显然,Eclipse比更新清单(可能位于工作空间文件夹中)做了一些更改。
  • 清理不同分支的两个版本。否则你会(显然 - 我试过了)从过去的构建中带走碎片,导致分支之间的资源混杂起来,并最终构建与你的目标完全不同的东西。
1

我认为您需要在<application>上使用android:label才能给该应用赋予不同的名称。还要确保你清理你的项目资源的变化出现。

+0

对不起,我有一个错字(现在更正)。 ''和主Activity都有'android:label =“@ string/app_name”'。奇怪的是,主要活动和启动器图标有正确的标题,它只是在管理应用程序中,旧标题仍然出现,尽管我没有在代码中看到它。图标同样适用:启动器和活动使用正确的图标,而管理应用使用旧图标,但它绝对不在'res /'文件夹结构中。我几次清理了这个项目,都无济于事...... – user149408

+0

如果你有不同的手机或模拟器,请尝试在那里安装。 – Varun

+0

我在VirtualBox上的Android x86上尝试过。在那里,当我安装一个应用程序,它取代了另一个。 APK中的某些东西似乎告诉Android,这两个包是相同的。 – user149408

相关问题