我正在开发两个Android应用程序,它们共享大部分代码(基本版和专业版)。
我从专业版开始,给它一个包名,如com.example.proapp。
对于Basic版本,我在git中创建了Pro版本的一个分支,并创建了Eclipse工作区的副本。在Basic分支处于活动状态时,我在Eclipse中打开了Basic工作区,并且:
app_name
中的strings.xml
。AndroidManifest.xml
中的包名称。 (应用程序及其主要活动的android:title
属性指向@string/app_name
。)com.example.pro
更改为com.example.basic
。现在,当我启动应用程序时,一切看起来都很好。那里有新的标题和图标。
但是,当我在Android上进入“管理应用”时,Basic应用会显示Pro应用的图标和标题字符串。 (如果我同时安装了两个,我会获得Pro应用程序的两个条目;只有在点击其中一个之后,我才会看到哪个是通过查看包名称。)
这里有什么问题?如何让我的Basic应用程序以其正确的名称和正确的图标显示?
更新:我尝试从“基本”分支创建第二个git存储库,并将代码导入新的Eclipse工作区。我从手机上卸下了我的应用程序的两种风格,然后放入了新的版本中。行为仍然相同 - 启动器和操作栏显示正确的图标和应用程序标题,而管理应用程序显示“专业”图标和标题。
这个“亡灵”图标和标题来自哪里?我们现在可以排除Eclipse工作区,我们可以在工作副本中排除构建碎片。
几乎看起来Android会保留已安装的应用数据的缓存,甚至超出卸载范围,并从那里恢复应用数据。但这只是猜测......任何人都可以对此有所了解吗?
另外,为什么Android认为这两个apks是同一个应用程序?除了包名称之外,APK中是否有内部标识符?
更新2:今天我在管理应用中获得了Basic版本(Pro one未安装)的正确名称和图标,但自从我上次查看以来,我没有更改任何内容。唯一的问题是管理应用程序活动可能在此期间被杀死并重新启动。似乎我在触发管理应用程序中的错误...但是什么触发了它?
答案 0 :(得分:1)
我认为您需要在android:label
上使用<application>
为该应用指定一个不同的名称。另外,请确保清理项目以显示资源更改。
答案 1 :(得分:0)
我想我明白了。
阅读Android project rename - won't launch now后,我做了以下事情:
src
下的Java包名称
瞧!在Nexus S和VirtualBox中,我在Manage Apps中获得了两个不同名称和不同图标的应用程序。
经验教训: