热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

2019独角兽企业重金招聘Python工程师标准以前写的,转过来如何用NetBeans在Kindle3下开发小程序(Kindlet)今天研究了一下这方面的帖子&

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

以前写的,转过来

如何用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

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


今天的学习总结完成&#xff0c;不清楚为什么我的系统上就是无法显示 hello world&#xff0c; >_<  明天继续学习......

FAQ:另外今天遇到最多的问题就是运行程序时显示“The permissions to open the requested title have an invalid date. Please contact customer service”&#xff0c;这个只要同步一下系统时间就可以了&#xff0c;就是K3的那个"menu/Sync & Check for Items”&#xff0c;就可以解决。

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

补充&#xff1a;

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

k3dev17.jpg

2011-8-7 22:32:43 上传
下载附件 (159.58 KB)
KINDLE3下编译的 hello world 截图&#xff1a;
终于搞定了&#xff0c;是跟前面安装的应用冲突了&#xff0c;重新安装了一下拼音输入法就好了&#xff0c;截图如下&#xff1a;
screen_shot-60194.gif

转:https://my.oschina.net/freeblues/blog/63709



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
author-avatar
猛儿187888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有