之前写的,转过来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 截图:
终于搞定了,是跟前面安装的应用冲突了,从新安装了一下拼音输入法就行了,截图以下: