如何用NetBeans在Kindle3下開發小程序(Kindlet)

之前寫的,轉過來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
k3_dev1.jpg java

2011-8-7 20:47:18 上傳
下載附件 (198.68 KB)


step2
k3dev2.jpg
2011-8-7 20:47:20 上傳
下載附件 (75.75 KB)


step3
k3dev3.jpg
2011-8-7 20:49:21 上傳
下載附件 (60.12 KB)


step4
k3dev4.jpg
2011-8-7 20:50:33 上傳
下載附件 (52.61 KB)


通過以上4步,一個基本的java程序就生成了,以下所示:

k3dev5.jpg
2011-8-7 20:53:40 上傳
下載附件 (211.97 KB)


不過爲了在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();
                      }
              }
      }

修改後以下圖所示:

k3dev6.jpg
2011-8-7 20:56:46 上傳
下載附件 (197.38 KB)


這時先檢查一下,看看這個項目有沒有包含kindlet-1.1.jar,沒有的話就手動添加一下,以下圖所示:
k3dev7.jpg
2011-8-7 21:02:02 上傳
下載附件 (208.11 KB)


k3dev8.jpg
2011-8-7 21:02:09 上傳
下載附件 (286.22 KB)


這時須要修改項目的 Manifest.mf 文件,這個文件在項目文件夾下,個人項目在這個目錄:
k3dev9.jpg
2011-8-7 21:07:00 上傳
下載附件 (95.71 KB)


使用一個文本編輯器修改 Manifest.mf  文件,我用VIM修改,原文件以下:
k3dev10.jpg
2011-8-7 21:12:38 上傳
下載附件 (56.5 KB)


須要加入如下5行內容:
Implementation-Title: testapp
Implementation-Version: 0.01
Implementation-Vendor: FreeBlues
Description: Test for Kindle
Main-Class: testapp.Main

加入後以下:
k3dev11.jpg
2011-8-7 21:12:40 上傳
下載附件 (65.5 KB)


做完上述修改並保存後,就能夠進行編譯了,按照下圖操做:
k3dev12.jpg
2011-8-7 21:16:19 上傳
下載附件 (245.44 KB)


編譯後在原來的項目文件夾下會多出兩個目錄,咱們只關注 「dist」 目錄,由於這裏放着編譯好的testapp.jar文件,接下來能夠把這個文件更名爲 testapp.azw2 未來就是把這個文件作必定的處理後上傳到咱們的Kindle3裏,以下:

k3dev13.jpg
2011-8-7 21:19:12 上傳
下載附件 (86.24 KB)


這時工做差很少作了一半了,能夠先鬆口氣,歇一下。

由於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,以下:
k3dev14.jpg
2011-8-7 21:41:27 上傳
下載附件 (166.77 KB)



【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,以下:
k3dev15.jpg
2011-8-7 21:49:54 上傳
下載附件 (192.92 KB)


(這裏的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 進行簽名,以下:
k3dev16.jpg
2011-8-7 22:02:35 上傳
下載附件 (153.43 KB)


好了至此就大功告成了,分別把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,如圖:

k3dev17.jpg

2011-8-7 22:32:43 上傳
下載附件 (159.58 KB)
 
KINDLE3下編譯的 hello world 截圖:
終於搞定了,是跟前面安裝的應用衝突了,從新安裝了一下拼音輸入法就行了,截圖以下:
screen_shot-60194.gif
相關文章
相關標籤/搜索