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















 
 
 



 
 
 
 