【问题标题】:Package conflict while publishing similar apps发布类似应用时包冲突
【发布时间】:2011-04-26 09:50:16
【问题描述】:

我需要在 android 市场上发布两个功能相似且使用相似代码库的应用程序。这些应用程序唯一不同的地方是客户端特定的图标和一些字符串。

在尝试发布时,我的应用似乎遇到了包冲突。我应该怎么做才能避免包冲突。我在网上做了一些搜索,看起来我必须更改我的类的基本包,这听起来很奇怪。我还有其他选择吗?

【问题讨论】:

  • 嗨,ankit,除了更改包名之外,我没有看到任何其他方法
  • 谢谢 Dinash... 但这太奇怪了。维护代码库将是可怕的。而且我什至不明白这样做的原因。

标签: android android-manifest google-play


【解决方案1】:

应用程序由包名称标识。因此包名需要是唯一的。这就是为什么每个人都使用一些域名来创建一个唯一的包(域也是唯一的)。

我的包裹看起来像:

org.shufflecity.android;
org.shufflecity.server;

您还可以为您拥有的每个客户端添加一个子包:

org.shufflecity.clientname.android

这应该可以解决问题...

【讨论】:

  • 嗨 Warren... 我要避免的是大量代码更改。因此,对于不同的客户,维护代码变得更加容易。否则维护不同的分支可能会很痛苦
  • 别无选择。更改软件包名称不是一个大问题。我会推荐一个稳定的非客户端版本,发布你只需导出它,更改包名称并发布它。
  • 看起来这个问题没有其他选择。我会继续接受你的回答。
【解决方案2】:

您只需要在清单中将其更改为包属性即可:

<manifest package="com.example.project" . . . >

不要忘记根据新的包名在清单文件中修复所有人员。

【讨论】:

  • 如果我按照这种方法,我不需要更改所有类的包名吗?
  • 你可以从 com.example.project 迁移到 com.example,那么你不需要更改任何包名。
  • 我没明白你的意思。你的意思是改变类包名以com.example开头,包名是com.example.project。我尝试了这种方法,但 R 文件仅在 com.example.project 包中生成。
【解决方案3】:

包名在市场上必须是唯一的。也就是说,您仍然可以重用您生成的代码,只需将公共代码设为 Android 库即可。然后每个客户端子项目将有一个不同的清单,指定不同的包名称。

不要忘记创建该包并在清单中为您的活动指定绝对包名。

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多