如何用NetBeans在Kindle3下开发小程序(Kindlet)

以前写的,转过来

如何用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
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第1张图片

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


step2
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第2张图片
2011-8-7 20:47:20 上传
下载附件 (75.75 KB)


step3
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第3张图片
2011-8-7 20:49:21 上传
下载附件 (60.12 KB)


step4
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第4张图片
2011-8-7 20:50:33 上传
下载附件 (52.61 KB)


经过以上4步,一个基本的java程序就生成了,如下所示:

如何用NetBeans在Kindle3下开发小程序(Kindlet)_第5张图片
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();
                      }
              }
      }

修改后如下图所示:

如何用NetBeans在Kindle3下开发小程序(Kindlet)_第6张图片
2011-8-7 20:56:46 上传
下载附件 (197.38 KB)


这时先检查一下,看看这个项目有没有包含kindlet-1.1.jar,没有的话就手动添加一下,如下图所示:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第7张图片
2011-8-7 21:02:02 上传
下载附件 (208.11 KB)


如何用NetBeans在Kindle3下开发小程序(Kindlet)_第8张图片
2011-8-7 21:02:09 上传
下载附件 (286.22 KB)


这时需要修改项目的 Manifest.mf 文件,这个文件在项目文件夹下,我的项目在这个目录:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第9张图片
2011-8-7 21:07:00 上传
下载附件 (95.71 KB)


使用一个文本编辑器修改 Manifest.mf  文件,我用VIM修改,原文件如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第10张图片
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

加入后如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第11张图片
2011-8-7 21:12:40 上传
下载附件 (65.5 KB)


作完上述修改并保存后,就可以进行编译了,按照下图操作:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第12张图片
2011-8-7 21:16:19 上传
下载附件 (245.44 KB)


编译后在原来的项目文件夹下会多出两个目录,我们只关注 “dist” 目录,因为这里放着编译好的testapp.jar文件,接下来可以把这个文件改名为 testapp.azw2 将来就是把这个文件做一定的处理后上传到我们的Kindle3里,如下:

如何用NetBeans在Kindle3下开发小程序(Kindlet)_第13张图片
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,如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第14张图片
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,如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第15张图片
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 进行签名,如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第16张图片
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 上传

下载次数: 3

219 Bytes, 下载次数: 3

2_sign.rar

2011-8-7 21:58:29 上传

下载次数: 2

217 Bytes, 下载次数: 2

补充:

刚发现可以直接在NetBeans里面修改 Manifest.mf 文件,比较方便,以前没怎么用过这个IDE,如图:

如何用NetBeans在Kindle3下开发小程序(Kindlet)_第17张图片

2011-8-7 22:32:43 上传
下载附件 (159.58 KB)
 
KINDLE3下编译的 hello world 截图:
终于搞定了,是跟前面安装的应用冲突了,重新安装了一下拼音输入法就好了,截图如下:
如何用NetBeans在Kindle3下开发小程序(Kindlet)_第18张图片

你可能感兴趣的:(如何用NetBeans在Kindle3下开发小程序(Kindlet))