2011-08-15 37 views
1

我们为合同编写应用程序 - 我们有很多应用程序,他们都使用我们的库。但是我们无法控制它们何时发布,这取决于客户端,所以它们都有我们库的不同版本(它总是被添加到)。黑莓 - 使用共享库时避免重复包名

我想知道什么避免在每个项目中使用相同的包名称的正确方法是?我相信这对于这里的经验丰富的BB开发者来说是有意义的。

对于我的发行版本,我重构了库以便为该项目使用唯一的包名称(通常通过将客户端名称放入包结构中)。但是这会增加eclipse的svn客户端的时间,麻烦和麻烦。这样做似乎完全错误(但它的工作原理)。

必须有一个正确的方法来做到这一点,甚至一些工具或脚本,因为被迫沿着这条路走下去似乎每次都是错误的。什么是避免这个问题的正确途径。


的为什么这是一个问题的解释:

  • 如果安装使用相同的封装结构某处他们许多应用程序,那么该设备将覆盖包。例如如果我使用com.ric.sdk作为我的库,那么使用我的sdk的每个应用程序都将覆盖其中的任何版本。

这很好,如果我们只是每次升级。对于我们来说,一些问题同时发生冲突,对我们造成问题:

  1. 我们为许多不同的客户端编写应用程序,并且喜欢为每个客户端使用我们的通用代码。
  2. 我们是一家新公司,我们的sdk越来越多。每个应用程序通常会向某些课程或其他课程添加一些方法。所以每个新应用都需要最新的SDK。旧的应用程序仍然可以使用新的SDK。新的应用程序将与旧的SDK打破。
  3. 我们没有发布控制,所以不能确定所有的应用总是有最新的sdk。

例如我们有一个8个月前创建的广播流应用程序。和3个月前的视频流应用(无关客户端)。本月的车辆追踪应用程序。如果有人安装了跟踪应用程序,然后发现&安装了电台应用程序,则新的sdk将被旧电视应用程序覆盖,并且跟踪应用程序中断,因为它与旧的sdk不兼容。

(具有相同的问题,这个问题涉及:Do apps downloaded from App World share projects?

我们已经吸取了教训,现在每个应用程序的最终版本之前重构SDK,以一个独特的名字,例如: radio.ric.sdkvideo.ric.sdk

但是,这是一个可怕的过程,与svn混乱,浪费时间,允许人为错误等 - 是否有一个工具,为我做这个?我不相信我们正在以正确的方式去做。

+0

你是否在使用PersistentStore? – jprofitt

+0

@jprofitt - 是的,但我不明白这是如何相关的。我有兴趣知道是否有一种工具可以将包名修改为唯一的名称,因此同一个SDK可以安全地用于多个应用程序(使用不同的分布式名称)。 –

+0

...只是为了“链接”到另一个类似的问题:http://stackoverflow.com/questions/5146365/changing-package-names-before-building-in-bamboo –

回答

1

jarjar是您想要使用的工具。它允许你获取一个jar文件并重命名所有的类,以使它们不与jar文件的其他用户发生冲突。在你的情况下,你可以将客户端的名称添加到包中。 jarjar的简短描述:

瓶瓶链接是一种实用工具,可以很容易地重新包装的Java 库并将其嵌入到自己的分销。这是有用的 有两个原因:

您可以轻松地发送一个没有外部依赖项的单个jar文件。
您可以避免库存依赖于库的特定版本的问题,这可能与另一个库的依赖关系冲突。

+0

Thx你有正确的想法 - 我的印象是,bb-ant-tools有一个命令来帮助处理命名空间的碰撞......你如何在jarjar的情况下进行构建?我是否正确地说它最好能够集成到Ant脚本中,然后你需要使用bb-ant-tools来完成其余的构建?我正在努力获得一个真正的使用Ant atm构建的项目 - 我在网上阅读的所有内容都为“Hello,World”提供了很好的提示,但是我们的项目有点复杂。我会检查jarjar。 –

0

通常,如果您有使用PersistentStore的内容,则需要更改提供给它的密钥,以避免出现此重复的程序包错误。我也经历过这种情况,只是将数字加1就允许我在多个项目中使用相同的包。

+0

我看到谢谢。可惜不是问题。我将编辑原始问题以详细说明问题。 –

+0

关于如何使用PersistentStore:我已经开始使用由代码计算的哈希值,而不是仅仅依靠sdk来创建它们。这给你更多的灵活性,你可能会觉得有用。检查'StringUtilities.stringHashToLong(keyString)'。 –

0

根据我过去几个月阅读的内容,我发现使用的工具BlackBerry Ant Tools可能有用。我认为答案是用它来做主要的构建,然后使用jarjar(参见Michael Donahue接受的答案)来完成包的重命名。


从网站:

什么是BB-Ant的工具?

黑莓蚂蚁工具是建立黑莓应用程序的蚂蚁任务的集合。它的设计尽可能简单但功能足以完全取代RIM JDE。但是,必须为rapc和签名工具jar文件安装JDE的副本。

+0

bb-ant-tools允许您从ant中执行自动命令行构建。我发现这是目前被接受的答案,但它并不能解决同一黑莓设备上的应用程序之间的命名空间冲突问题。无论您是从Eclipse构建还是通过bb-ant工具从ant构建,命名空间冲突问题都不会消失。 –