我们为合同编写应用程序 - 我们有许多应用程序,他们都使用我们的库。但是我们无法控制它们何时被释放,这取决于客户端,因此它们都有不同版本的库(总是被添加到库中)。
我想知道在每个项目中避免为库使用相同包名的正确方法是什么?我相信这对于经验丰富的BB开发者来说是有意义的。
对于我的发布版本,我重构库以使用该项目的唯一包名称(通常通过将客户端的名称放入包结构中)。但这会增加时间,麻烦和eclipse的svn客户端的混乱。这样做似乎完全错误(但它确实有效)。
必须有一个正确的方法来执行此操作,甚至是某些工具或脚本,因为每次都被迫沿着这条路走下去似乎是错误的。什么是避免这个问题的正确方法。
解释为什么这是一个问题:
com.ric.sdk
作为我的库,那么使用我的sdk的每个应用都将覆盖那里的任何版本。 如果我们只进行每次升级,这都很棒。对我们来说,一些问题同时发生冲突,给我们带来了问题:
e.g。我们有一个8个月前创建的无线电流媒体应用程序。和3个月前的视频流应用程序(不相关的客户端)。这个月的车辆跟踪应用程序。如果有人安装了跟踪应用,然后找到&安装收音机应用程序,新的sdk被旧的sdk覆盖,跟踪应用程序因为与旧的sdk不兼容而中断。
(此问题涉及相同的问题:Do apps downloaded from App World share projects?)
我们已经吸取了教训,现在在每个应用的最终版本之前将sdk重构为一个独特的名称,例如: radio.ric.sdk
或video.ric.sdk
。
但这是一个可怕的过程,与svn混淆,浪费时间,允许人为错误等 - 是否有一个工具为我做这个?我不相信我们正在以正确的方式做到这一点。
答案 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的副本。