BlackBerry應用開發(fā)者指南 使用受控API
我們給大家介紹過《簡介BlackBerry API》,在本指南中描述的BlackBerry API訪問是受限制的.使用了受限API的應用程序可以在模擬器上運行.盡管這樣,在將這些應用程序加載到BlackBerry設備之前,你必須從RIM(Reseach In Motion)獲得代碼簽名.
BlackBerry API包
描述
- net.rim.blackberry.api.browser
此包允許應用程序可以調用BlackBerry瀏覽器.
- net.rim.blackberry.api.invoke
此包允許應用程序調用BlackBerry應用程序,如任務,消息,備忘以及電話。
- net.rim.blackberry.api.mail
此包允許應用程序和BlackBerry消息進行交互,發(fā)送,接收和打開消息.
- net.rim.blackberry.api.mail.event
定義了消息事件以及監(jiān)聽者(Listener)接口來管理郵件事件。
- net.rim.blackberry.api.menuitem
允許你增加客戶定制的菜單項到BlackBerry的應用程序中,例如地址本,日歷以及消息。
- net.rim.blackberry.api.options
允許應用程序在BlackBerry設備的選項中增加選項條目。
- net.rim.blackberry.api.pdap
允許應用程序和BlackBerry個人信息管理(PIM)交互,PIM包括地址本,任務,日歷。MIDP包javax.microedition.pim提供了大部分類似的功能.
- net.rim.blackberry.api.phone
提供了訪問電話程序的高級特性的功能。
- net.rim.blackberry.api.phone.phonelogs
提供了訪問電話呼叫歷史記錄的功能。
- net.rim.device.api.browser.field
允許程序在界面上顯示瀏覽器的字段。
- net.rim.device.api.browser.plugin
允許程序將對附加MIME類型的支持增加到BlackBerry瀏覽器上。
- net.rim.device.api.crypto.*
這些包提供數(shù)據(jù)安全的能力,包括數(shù)據(jù)加密和解密,數(shù)字簽名,數(shù)據(jù)認證,以及認證管理.
- net.rim.device.api.io.http
此包允許應用程序作為一個或多個URL的提供者注冊BlackBerry瀏覽器.
- net.rim.device.api.notification
提供方法來觸發(fā)事件的通知以及響應系統(tǒng)和程序的事件.
- net.rim.device.api.servicebook
允許程序增加,刪除,以及訪問服務預定接口.
- net.rim.device.api.synchronization
此包允許應用程序執(zhí)行備份和恢復客戶數(shù)據(jù)的操作.
- net.rim.device.api.system
此包提供了一些類,這些類支持一些功能,例如持久數(shù)據(jù)存儲,交互通信(interprocess communication),SMS,使用數(shù)據(jù)報的網(wǎng)絡連接,以及應用程序管理.#p#
代碼簽名
在BlackBerry JDE中,因為安全和導出原因,RIM跟蹤一些敏感API的使用.在API參考中,一個鎖住的圖標或者需要簽名的文本,指明了敏感的類或方法.在文檔中,對于一個包含簽名方法的類,在頁的頂部選擇或清除SHOW Signed選項來查看或隱藏簽名的方法.
如果你在你的應用程序中使用簽名的類和方法,那么在你將.cod文件加載到BlackBerry設備中之前,這些.cod文件必須數(shù)字化簽名.
(注: 在接收代碼簽名之前為了測試你的代碼,使用模擬器.為了部署到BlackBerry設備,代碼必須簽名。)
簽名工具和BlackBerry JDE一起安裝,使用此工具為你的.cod文件請求合適的簽名.
(注: 永遠不要將你的實際代碼發(fā)給RIM.簽名工具發(fā)送一個代碼文件的SHA-1哈希,以至簽名中心系統(tǒng)可以生成一個需要的簽名.)
代碼簽名驗證
代碼簽名驗證類型
描述
連接時(Linktime)驗證
當你加載一個簽名.cod文件到BlackBerry設備時,VM將此.cod文件域API庫連接,并且檢驗.cod文件是否需要簽名.如果沒有簽名,VM停止連接,并且不再加載應用程序.
運行時(Runtime)驗證
當用戶在BlackBerry設備上使用應用程序時,如果應用程序調用了一個需要簽名的方法時,VM驗證應用程序是否包含必要的簽名.如果簽名沒有提供,將會拋出一個ControlledAccessException異常,并且要求的操作也不會執(zhí)行.
為獲得更多關于.csi文件的信息,參看10頁的”注冊代碼簽名”。
代碼簽名請求過程
◆簽名工具打開一個和簽名認證系統(tǒng)的HTTP連接,并發(fā)送一個請求.這個請求包括了.csl和.cso文件中代碼的哈希.不會把實際的代碼發(fā)送到RIM.
◆簽名認證系統(tǒng)驗證請求是否有效,并且將一個RIM私有鍵應用到每個.cod文件的哈希上,以創(chuàng)建一個簽名.
◆簽名認證系統(tǒng)返回簽名給簽名工具,并關閉HTTP連接.
◆簽名工具將簽名加到每個.cod文件中.
當文件簽名以后,每個.cod文件的Status欄顯示Signed.
如果在簽名請求中有任何問題發(fā)生,Status欄顯示Failed-See Details.
當你的.cod文件簽名之后,你可以將它們加載到BlackBerry設備中.為獲得更多信息.
可選簽名
在沒有.cso文件簽名下,你可以將應用程序加載到BlackBerry設備上.如果它們對應的方法在運行時被調用,那么僅僅需要這些簽名.
當應用程序調用一個需要簽名的方法時,VM驗證應用程序是否有了這個認證.如果VM沒有發(fā)現(xiàn)這些可選的簽名,應用程序將會停止.
簽名限制
存在著有幾種情形,在這幾種情形里,代碼簽名處理不會完成:
客戶參數(shù)
簽名認證管理員通過指定使用時間或者頻率參數(shù)的限制,可以限制你訪問簽名.這些參數(shù)在你的.csi文件中有定義.當應用簽名時注意這些可能的限制.
參數(shù)
定義
# of Request
本參數(shù)設置你可以使用指定.csi文件請求的次數(shù).在使用了最大的請求次數(shù)之后,csi文件變?yōu)闊o效,并且你不可以再使用此文件請求簽名.聯(lián)系你的簽名認證管理員應用另外一個.csi文件.
因安全原因請求受限制,盡管如此, 簽名認證管理員可以允許你請求無限次.
Expiry Date
本參數(shù)設置你的csi文件的過期日期.在你的.csi文件過期后,你不能再使用此文件請求簽名. 聯(lián)系你的簽名認證管理員應用另外一個.csi文件.
為了請求改變這些.csi參數(shù), 聯(lián)系你的簽名認證管理員.
丟失數(shù)據(jù)
沒有.csi文件,你不能請求任何代碼簽名.你的注冊鍵在你的csi文件中存儲. 如果簽名工具不能找到此鍵,并通過此鍵處理你的請求,你的簽名請求沒有一個可以發(fā)送到簽名認證系統(tǒng).
如果你的系統(tǒng)停止響應,并且你丟失了數(shù)據(jù),甚至整個文件結構,你可能會發(fā)現(xiàn)你也失去了完成簽名請求的能力.如果你丟失了,csi文件,簽名工具不能和簽名認證系統(tǒng)進行通信,
如果你丟失了.csi文件,聯(lián)系你的簽名認證管理員,請求一個新的.
為代碼簽名注冊
對于每臺需要鍵的計算機,你需要一組獨立的代碼簽名鍵.一旦這些鍵安裝在一臺計算機上,你不能重新安裝或轉移到其他的計算機上.
為了為代碼簽名注冊,你必須有HTTP訪問Internet的能力.
◆為了激活你的帳戶,完成在BlackBerry開發(fā)區(qū)里的注冊表:
http://www.blackberry.com/developers.
◆當你在一個來自RIM的email里接收到.csi文件時,將它們保存到你本地計算機.
◆雙擊一個.csi文件
如果一個對話框顯示一個私有鍵不能找到,在繼續(xù)之前完成下面的操作
◆單擊Yes創(chuàng)建一個新的值對文件.
◆為你的私有鍵輸入一個密碼,重新輸入確認此密碼.
◆單擊OK.
◆移動你的鼠標,為新的私有值對生成數(shù)據(jù).
◆在Registration PIN域,輸入簽名請求表或者RIM提供的PIN值.
◆在Private Key Password域里,輸入至少8個字符的密碼.這就是你的私有密碼,它保護你的私有鍵.
(注:保護好你的私有鍵密碼. 如果你丟失了這個密碼,你必須在RIM重新注冊.如果你的密碼被偷了,立即聯(lián)系RIM撤銷你的鍵阻止其他人使用你的身份請求簽名.)
◆單擊Register.
◆單擊Exit.
修改你的私有鍵密碼
你必須有HTTP訪問Internet的能力,以至你能修改你的私有鍵密碼.
◆在BlackBerry JDE bin文件夾里,雙擊SignatureTool.jar.
◆在Old Password域里,輸入你當前的私有鍵密碼.
◆單擊Verify.
◆<輸入和確認新密碼.
◆單擊OK.
請求代碼簽名
在IDE中請求一個代碼簽名
◆編譯你的項目
在IDE里的Build菜單里,單擊Build All.IDE創(chuàng)建下列3個文件,它們放在和工程.jdp文件相同的目錄下面,對于每個項目:
文件擴展名描述
.cod文件 將加載到BlackBerry設備的已編譯的項目.
.csl文件 需要的連接時簽名列表.
.cso文件 如果應用程序調用受控API,可能在運行時需要的簽名列表.
◆在Build菜單,單擊Request signatures.
(警告: 如果你已經通過以前的SDK為代碼簽名注冊了,在安裝一個新的BlackBerry JDE版本之前,備份這些文件,它們在BlackBerry JDE bin目錄下.)
l Sigtool.db
l Sigtool.csk
如果這些文件丟失,你必須通過RIM重新注冊.
◆單擊Add.
◆在Look In下拉列表里,單擊.cod文件所在的目錄.
◆單擊一個.cod文件.
◆單擊Open.
◆單擊Request
◆輸入私有鍵密碼.
◆單擊OK.
在命令行強求簽名
◆在命令行里,已到包含簽名工具軟件的目錄.
◆輸入下面的命令行
- java -jar SignatureTool.jar [-a] [-c] [-C] <file>:
在這里:
[-a] 當你想程序自動請求簽名時使用.
[-c] 當你想程序在請求簽名沒有發(fā)生錯誤后關閉時使用.
[-C] 當你想程序不考慮它的 成功時關閉時使用.
<file> 可以為一個(僅有一個).csi文件,或一個或多個.cod文件的名字.
l .csi:.csi文件包含了客戶注冊信息以及客戶允許應用的簽名列表.你僅可以一次使用一個.csi文件.
l .cod:.cod文件時編譯的應用程序,在所以需要的簽名到位后,它可以加載到BlackBerry設備.你可以傳入你想要的.cod文件數(shù).
【編輯推薦】