如何用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
相关文章
相关标签/搜索