第6步:常見問題解答
如果您使用簽名工具,一般都是沒有問題,請檢查JAD文件是否含有MIDlet-Certificate-1-1、MIDlet-Certificate-1-2、MIDlet-Certificate-1-3屬性和MIDlet-Jar-RSA-SHA1屬性。問題往往出在部署過程,主要常見問題有:
1.不能驗證證書
簽名成功後仿真時出現如下圖12所示警告信息:
圖12顯示“System does not recognize who is trying to authorize the application”,意思是無法驗證證書頒發機構。主要有2個原因:
(1)證書導入問題:您申請證書時會生成私鑰和CSR(證書請求文件),在頒發證書給您之前,一定不能刪除NDS 3.0或WTK 2.5等簽名工具,也不要再動證書管理,不要再使用自簽證書做實驗等。而取到證書後,必須在生成CSR的同一台電腦上的同一簽名工具中導入證書,否則證書不能導入成功;
(2)使用的簽名證書的根證書沒有預置在手機中(包括自簽證書),請一定要購買Thawte或VeriSign的Java代碼簽名證書,其他CA頒發的證書都不支持。
2.JAR文件已經被修改
如下圖13所示,顯示如下警告信息:
圖13“The signature of the JAR is invalid”意思是JAR文件簽名無效。主要有2個原因:
(1)簽名MIDlet後修改了JAR文件:也許您發現簽名時簽名工具讀取JAD文件,而不是JAR文件,這樣會誤以為簽名時是簽的是JAD文件,而與JAR文件無關。其實,簽名時會計算出JAR文件的SHA-1摘要,並把此摘要寫在JAD文件中。如果您修改了JAR文件,則其SHA-1摘要就變了,MIDlet在驗證時就會出錯。所以,您簽名MIDlet後,一定不能再修改JAR文件,如果要修改,則需要重新簽名;
(2)JAR文件在網絡傳輸或下載過程中被篡改,可能是下載的原因,也有可能是被其他人非法故意篡改。哪怕是一個字節的修改,也不能通過驗證。這就是簽名的基本功能之一。
3.許可不匹配
如果MIDlet中的許可屬性(MIDlet-Permissions)中有一個或多個不屬於所屬的保護域,則仍然不允許安裝。而如果MIDlet中的可選許可屬性(MIDlet-Permissions-Opt)中有一個或多個不屬於所屬的保護域,會允許安裝。
如下圖14所示,如果我們修改http許可為:Javax.microedtion.io.Connector.htt,則會顯示如下警告信息:
圖14