我們已經使用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