BlackBerry - 使用共享库时避免重复的包名称

时间:2011-08-15 06:03:15

标签: blackberry build build-process

我们为合同编写应用程序 - 我们有许多应用程序,他们都使用我们的库。但是我们无法控制它们何时被释放,这取决于客户端,因此它们都有不同版本的库(总是被添加到库中)。

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

对于我的发布版本,我重构库以使用该项目的唯一包名称(通常通过将客户端的名称放入包结构中)。但这会增加时间,麻烦和eclipse的svn客户端的混乱。这样做似乎完全错误(但它确实有效)。

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


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

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

如果我们只进行每次升级,这都很棒。对我们来说,一些问题同时发生冲突,给我们带来了问题:

  1. 我们为许多不同的客户编写应用程序,并喜欢为每个客户使用我们的通用代码。
  2. 我们是一家新公司,我们的SDD正在发展壮大。每个应用程序通常会为某些类或其他类添加一些方法。所以每个新的应用程序都需要最新的sdk。旧的应用程序仍然可以使用新的sdk。新的应用程序将破坏旧的sdk。
  3. 我们没有发布控件,所以不能确定所有应用程序总是有最新的sdk。
  4. e.g。我们有一个8个月前创建的无线电流媒体应用程序。和3个月前的视频流应用程序(不相关的客户端)。这个月的车辆跟踪应用程序。如果有人安装了跟踪应用,然后找到&安装收音机应用程序,新的sdk被旧的sdk覆盖,跟踪应用程序因为与旧的sdk不兼容而中断。

    (此问题涉及相同的问题:Do apps downloaded from App World share projects?

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

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

3 个答案:

答案 0 :(得分:1)

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

  

Jar Jar Links是一个实用程序,可以轻松地重新打包Java   库并将它们嵌入到您自己的发行版中。这很有用   有两个原因:

     

您可以轻松发送一个没有外部依赖关系的jar文件   您可以避免库依赖于特定的问题   库的版本,可能与其依赖性冲突   另一个图书馆。

答案 1 :(得分:0)

通常,如果你有使用PersistentStore的东西,如果你想避免这个重复的包错误,你需要更改提供给它的密钥。我也经历过这种情况,只需将数字增加1,就可以让我在多个项目中使用相同的包。

答案 2 :(得分:0)

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


来自网站:

什么是bb-ant-tools?

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