我们已经使用4.6代码签名工具签署了4.7黑莓应用程序。但是当第二次启动应用程序时,它会抛出一个'KeyCodeNumber异常'。签名黑莓应用程序后为什么会出现KeyCodeNumber异常?
有人为什么会得到这个异常的一些线索?
谢谢!
我们已经使用4.6代码签名工具签署了4.7黑莓应用程序。但是当第二次启动应用程序时,它会抛出一个'KeyCodeNumber异常'。签名黑莓应用程序后为什么会出现KeyCodeNumber异常?
有人为什么会得到这个异常的一些线索?
谢谢!
KeyCodeNumber异常与验证过程没有关系。
黑莓published an article描述如何防止验证错误:
When developing Java applications for the BlackBerry smartphone, you may encounter any of the following verification errors or errors similar to the following:
Verification Error 3141 Module 'MyMIDlet' has verification error (<###>) at offset <###>. Error starting MyMIDlet: Module 'MyMIDlet' has verification error (<####>) at offset <###>." These errors often occur when creating MIDlets. They are inherently hard to debug because the same error message can apply to a number of problems.
以下是可能的解决方案,以防止或纠正验证错误的清单:
要解决此问题,不要让一个构造函数中的高级应召如下面的例子:
Class1 class1;
String className = Class2.class.getName();
Class1 = new Class1(className);
从内部类中删除静态实例变量的引用。例如,下面的代码示例可能会导致一个错误:
public class MyOuterClass {
static int var;
class MyInnerClass {
public void doSomething() {
var = 7;
}
}
}
有几个方法可以删除这些引用,如在外部类创建get/set方法对VAR或修改逻辑拉MyInnerClass MyOuterClass之外。
构建程序通常 从Java源文件 使用javac命令编译,然后 运行preverify.exe文件,然后 RAPC。 参数添加以下命令行的javac,以帮助避免在早期版本的 RAPC的 问题:
的javac.exe -source 1.3 -target 1.1
是很长的一些方法可以 原因验证错误。通过 打破这些方法为辅助 方法,可以减少验证错误的 可能性。
虽然不作为可能,一些很 长法定义(具有10个或 多个参数),以及一些很长的 常数定义(长包 结构和/或长的名称)可 也导致验证错误。
伟大的职位,但是这就是为什么移动开发太疯狂;) – drubin 2010-12-21 20:42:41