江边闲话集

BlackBerry项目大小限制

今天上午Peter问我为什么BlackBerry的IDE,其实就是JDE编译出来的COD文件有xxx-1.cod呢.这个问题2年前就遇见过,今天在这里正式解答一下.

症状

当编译之后,发现编译的COD文件除了xxx.cod之外,还有一个xxx-1.cod.

分析

2年前,JDE最高版本是4.0. 4.0是没有问题,但是对于4.0以前的版本,如3.7和3.6,都有类似问题.问题的关键4.0以前的JDE,项目的大小是有限制的,今天我给peter说这个限制大小可能是128K,其实这个是64K的code最大值与64K的数据最大值之和,而数据又包括二进制,资源文件,静态方法以及静态文本等.如果一旦超过最大值,就会按照症状那样,将它们分解成如果干个小文件.

解决方案

  •  换一个更新版本的JDE
  • 或将项目分解成几个更小的项目,这样每个小项目自己都会编译成一个COD.这样做,不仅架构清晰,而且易于维护,同时也适合更多的平台.还有一点,就是解决我们现在的问题.

隐含的问题

其实这样的话,可能带来一些隐藏的问题,例如部署问题,特别是在OTA时,例如通过JAR 转化为COD时,可能会提示找不到分解的小COD文件.

 

更正:

 以前说4.0是有限制的,其实4.0是没有限制的,抱歉!

5评论

  1. Michael says:

    我现在遇见的就是这个隐含的问题,OTA时提示我找不到分解的小COD文件,并且我在编译的时候,也未曾见到XX-1.cod文件单独出现。在签名是可以看见该文件,并且显示其位置就是在.cod文件中。
    有何高见?

  2. Confach says:

    hi,peter
    以前我编译的时候,是可以找到xxx-1.cod文件的,不然我也不会发现这个问题的.

  3. Michael says:

    你用的是3.7吧 我刚才也用3.7编译过 还是只有一个.cod 文件

  4. Confach says:

    在code sign的时候会出现吗?

  5. Michael says:

    会的。我在代码签名时看到了该文件的名称。