之前寫的,轉過來php
如何用NetBeans在Kindle3下開發小程序(Kindlet)
今天研究了一下這方面的帖子,基本上明白了一些原理,主要參考這兩個貼,首先感謝這些程序員的無私奉獻:
【Kindlet 開發過程簡介】
http://www.hi-pda.com/forum/viewthread.php?tid=702643
【Guide: How to write Kindlets 】
http://www.mobileread.com/forums/showthread.php?t=102386
具體操做時才發現還有很多細節須要注意,說明一下過程,但願能爲感興趣的朋友提供一點幫助,同時也做爲今天學習的一個總結,省得過兩天就忘了,嘿嘿。
前提條件是要越獄,這個就很少說了,上面兩個帖子都有描述。
首先就是安裝一套NetBeans的開發環境,導入Java ME,導入CDC,細節能夠參考第一個帖子,而後就能夠創建項目,以下截圖所示:
step1
java
step2
step3
step4
通過以上4步,一個基本的java程序就生成了,以下所示:
不過爲了在Kindle上運行,須要修改裏面的代碼以下:
package testapp;
import com.amazon.kindle.kindlet.AbstractKindlet;
import com.amazon.kindle.kindlet.KindletContext;
import com.amazon.kindle.kindlet.ui.KTextArea;
public class Main extends AbstractKindlet {
private KindletContext ctx;
public void create(KindletContext context) {
this.ctx = context;
}
public void start() {
try {
ctx.getRootContainer().add(new KTextArea("Hello World swww @_@ !"));
} catch (Throwable t) {
t.printStackTrace();
}
}
}
修改後以下圖所示:
這時先檢查一下,看看這個項目有沒有包含kindlet-1.1.jar,沒有的話就手動添加一下,以下圖所示:
這時須要修改項目的 Manifest.mf 文件,這個文件在項目文件夾下,個人項目在這個目錄:
使用一個文本編輯器修改 Manifest.mf 文件,我用VIM修改,原文件以下:
須要加入如下5行內容:
Implementation-Title: testapp
Implementation-Version: 0.01
Implementation-Vendor: FreeBlues
Description: Test for Kindle
Main-Class: testapp.Main
加入後以下:
做完上述修改並保存後,就能夠進行編譯了,按照下圖操做:
編譯後在原來的項目文件夾下會多出兩個目錄,咱們只關注 「dist」 目錄,由於這裏放着編譯好的testapp.jar文件,接下來能夠把這個文件更名爲 testapp.azw2 未來就是把這個文件作必定的處理後上傳到咱們的Kindle3裏,以下:
這時工做差很少作了一半了,能夠先鬆口氣,歇一下。
由於kindle的每一個應用(小程序)都必須有簽名,因此比較麻煩的地方就在這裏,由於咱們都不是亞馬遜受權的開發人員,因此須要利用越獄的手段本身來更新keystore,我參考的兩個帖子中使用了不一樣的辦法來應對簽名,第一個帖子是藉助adq的devkeys的簽名,第二個帖子直接利用java環境自帶的工具keytool來生成keystore和簽名,我試了第一個帖子的辦法,不知道哪裏沒設置對,老是沒辦法成功,後來用第二個帖子的辦法才搞定,因此這裏介紹的是第二個帖子的辦法,這分兩步,第一步是利用java自帶的程序 keytool.exe 生成本身的keystore,第二步是利用java自帶的程序 jarsigner.exe 跟剛纔生成的keystoe文件(這裏的keystore文件名是developer.keystore)爲咱們的前面編譯好的testapp.azw2文件進行簽名,最後再把咱們生成的developer.keystore文件上傳到K3的
/var/local/java/keystore/developer.keystore ,這裏說明一下,更換這個developer.keystore文件會影響其餘經過一樣方法開發出來的小程序,好比我原來安裝的象棋,能夠先把這個目錄下的文件(
/var/local/java/keystore/)進行備份,以便未來恢復,還要把簽名後的 testapp.azw2 上傳到K3的 \mnt\us\documents\ 目錄下,最後重啓K3,就能運行這個小程序了,不過個人不清楚什麼緣由,只能看到標題,沒看到那個hello world,下面詳細描述一下若是生成developer.keystore和如何對testapp.azw2進行簽名。
keytool.exe 和 jarsigner.exe 都在java的安裝目錄下,個人環境在這個目錄:D:\Program Files\Java\jdk1.6.0_25\bin,以下:
【1】利用keytool生成developer.kestore,命令以下:
D:\"Program Files"\Java\jdk1.6.0_25\bin\keytool -genkeypair -keystore developer.keystore -storepass password -keypass password -alias dkTest -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -validity 5300
D:\"Program Files"\Java\jdk1.6.0_25\bin\keytool -genkeypair -keystore developer.keystore -storepass password -keypass password -alias diTest -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -validity 5300
D:\"Program Files"\Java\jdk1.6.0_25\bin\keytool -genkeypair -keystore developer.keystore -storepass password -keypass password -alias dnTest -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -validity 5300
我作成了批處理命令1_kestore.bat
1_keystore.rar (261 Bytes, 下載次數: 4)
2011-8-7 21:46:44 上傳
下載次數: 4
,拷貝到testapp.azw2 所在的目錄下( C:\Users\admin\Documents\NetBeansProjects\testapp\dist),在命令行窗口執行 1_kestore.bat ,就會生成developer.keystore,以下:
(這裏的developer.keystore就是咱們本身生成的keystore,要上傳到K3的 (
/var/local/java/keystore/) 目錄中覆蓋原來的文件)
【2】利用剛纔生成的developer.keystore給咱們的testapp.azw2進行簽名,命令行以下:
D:\"Program Files"\Java\jdk1.6.0_25\bin\jarsigner -keystore developer.keystore -storepass password testapp.azw2 dkTest
D:\"Program Files"\Java\jdk1.6.0_25\bin\jarsigner -keystore developer.keystore -storepass password testapp.azw2 diTest
D:\"Program Files"\Java\jdk1.6.0_25\bin\jarsigner -keystore developer.keystore -storepass password testapp.azw2 dnTest
我也作成了批處理 2_signapp.bat
2_signapp.rar (220 Bytes, 下載次數: 3)
2011-8-7 22:00:00 上傳
下載次數: 3
,拷貝到testapp.azw2 所在的目錄下( C:\Users\admin\Documents\NetBeansProjects\testapp\dist),在命令行窗口執行 2_signapp.bat ,就會利用剛纔的developer.keystore爲咱們的 testapp.azw2 進行簽名,以下:
好了至此就大功告成了,分別把developer.keystore 和 testapp.azw2 上傳到 K3的對應目錄,而後重啓,就能夠運行了,附上我編譯出來的這兩個文件:
dist.rar (5.53 KB, 下載次數: 6)
2011-8-7 22:09:10 上傳
下載次數: 6
。
今天的學習總結完成,不清楚爲何個人系統上就是沒法顯示 hello world, >_< 明天繼續學習......
FAQ:另外今天遇到最多的問題就是運行程序時顯示「The permissions to open the requested title have an invalid date. Please contact customer service」,這個只要同步一下系統時間就能夠了,就是K3的那個"menu/Sync & Check for Items」,就能夠解決。
-
-
2_sign.rar 程序員
2011-8-7 21:55:31 上傳小程序
下載次數: 3app
219 Bytes, 下載次數: 3編輯器
-
-
2_sign.rar ide
2011-8-7 21:58:29 上傳工具
下載次數: 2學習
217 Bytes, 下載次數: 2ui
補充:
剛發現能夠直接在NetBeans裏面修改 Manifest.mf 文件,比較方便,之前沒怎麼用過這個IDE,如圖:
KINDLE3下編譯的 hello world 截圖:
終於搞定了,是跟前面安裝的應用衝突了,從新安裝了一下拼音輸入法就行了,截圖以下: