本章概要:

1EclipseJ2me开发环境搭建

2、实现J2me环境下运行C2D引擎

3、使用自定义的WTK模拟器和KE模拟器

4、分离引擎,实现J2meAndroid快速平台切换

预先说明,本章示例在Windows下面编写,MAC的同学过程大致相同。另外就是有一个提示,我们在安装Eclipse插件或者更新一些SDK的时候,由于我们需要连接到国外,因此我们网络会变得很脆弱,这个时候你就最好不要使用无线网络了,直接插上网线吧,因为那样只能使得网络更加脆弱,容易导致莫名的更新失败。另外这里的引擎代码请使用GoogleCode上面1.1以上的引擎包。

要开发J2me应用程序,我们首先需要搭建J2me应用程序开发环境,实际上也就是要安装J2meSDK,即WTK以及一个插件叫MTJ的插件。

首先我们安装WTK,在Oracel的网站上找到WTK的下载地址:

http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html

我现在看到的最新版本是3.0.5,我们做游戏有经验的同学都知道,WTK并非越新越好,因为越新的WTK需要的JDK也就越新,有时候需要针对的手机终端对应的JDK的版本比较低,那么我们就必须使用低的JDK进行打包,有时候可能还得用回旧的WTK,当然如果你知道怎样去在打包时指定JDK版本甚至知道如何手动使用Jar指令去打J2me的包,则另当别论。另外跟插件的兼容性也有关系,现在的Eclipse插件MTJ似乎还不支持WTK3.0之后的版本,会发现找不到模拟器的问题,我们索性仍然使用旧的版本2.5.2,下载地址在这里
http://www.oracle.com/technetwork/java/download-135801.html

我们下载这个版本,不需要注册

好像官网上能下到的最老的版本也就是2.5.2了,它的JDK要求是1.5.还需要再老的话,自己去搜索吧。

下载完成之后,就是安装了,最好就按照默认的情况安装,默认安装在C:\WTK2.5.2
安装完成之后,在C:\WTK2.5.2\bin,我们可以看到很多的exe文件,这些文件包括了模拟器,设备管理器等等,在C:\WTK2.5.2\apps下面,我们可以看到很多的工程源码,这里是WTK自带的示例工程,也是我们学习J2me的很好的资源。C:\WTK2.5.2\lib,这个目录是J2me的库,包含了很多jar文件,C:\WTK2.5.2\wtklib这里是工具库,也就是WTK工具所需要的库,并非我们最终打包成的J2me应用程序所需要的库。在C:\WTK2.5.2\docs,这里是J2meAPI文档。在C:\WTK2.5.2\toolkit-lib\devices,这个目录包含了模拟器配置,在其下面的每个文件夹,对应一个模拟器外观,在任意的文件夹内部,我们可以看到.properties结尾的文件,它便是存储了此模拟器的配置信息,我们可以通过修改这个文件,达到我们自己手动配置模拟器的目的。
安装好模拟器之后,我们其实可以启动bin目录下的那些可执行文件,例如启动模拟器使用ktoolbar.exe。也可以使用命令行来启动一些校验等工具,但是如果你是新手,现在应该还不习惯用命令行这么做,其实开发过程中,我们也很少需要这么做,除非你自己去写WTK的打包过程。接下来我们先安装一个Eclipse插件,叫做MTJ,有了它之后我们可以从Eclipse
中的工程去启动模拟运行。

MTJ插件主页在这里:http://www.eclipse.org/mtj/

我们可以使用前面章节讲过的安装Eclipse的插件的方法来安装MTJ,就是在Install New SoftWare界面,从http://download.eclipse.org/mtj/updates/1.1.2/stable/这个网址去安装插件,具体过程我就不去详述,可以参考前面安装ADT的过程。

上面这幅画面在我的电脑上持续了大概5分钟,所以你也耐心点吧,会过去的,只要进度条开始走动,后面就快了,整个安装过程我这里持续了10分钟左右。

安装之后,要求重启Eclipse,重启过后,打开Window->Preferences,会看到增加了一个Java ME标签,如图:

其中WTK Root就是我们需要提供的WTK安装地址,这个是必须要填写的,如果我们需要针对我们的应用程序进行混淆,我们需要下载Proguard,这是可以混淆我们的J2me应用程序代码的一个工具,下载地址在这里:
http://proguard.sourceforge.net/

下载完成之后,解压缩好放在某个地址,然后将路径拷贝到Proguard Root Directory里面就可以了,像我上图做的那样。至于Antenna,在这里,MTJ本身也是可以集成Antenna的,或者也可以单独安装这个插件,这个问题我们稍后再讨论。(上面的Antenna路径可以不填,除非你自己已经会使用了,你自己来决定怎么样使用)

接下来,选中“Java ME”下面的“Device Managerment”,这里用来导入我们在WTK中建立的模拟器,点击右侧的“Manual Install…”,找到我们的WTK的安装目录,我的目录是C:\WTK2.5.2,指定给它之后,它会自行搜索目标目录下的所有模拟器,结果如下图:

确定之后,我们便配置完成了MTJ的插件。

接下来,我们演示一个J2me工程的运行示例。File->New->Other挑选Java Me->MIDlet Project,如图:

接着,为我们的工程设置名称,并选择我们的模拟器

然后,就是为我们的J2me应用程序设置名称,以及目标的CLDCMIDP版本

直接点击Finish,完成之后我们可以看到一个新的J2me工程建立完成。

但是此时还没有任何代码,我们知道J2me的启动类叫MIDlet,因此,我们在src文件夹上点击右键->New->Java ME MIDlet,进入我们的启动类设置

点击Finish之后,我们的启动类就加好了,默认添加了一些方法。
开是模拟器执行,打开菜单Run->RunConrigurations->双击Emulated JavaME MIDlet
,设置成如图配置

然后点击Run,可以看到我们的模拟器启动了,虽然只是一个空白屏幕。

至此,我们的J2me开发环境就配置完成了。

在我们的J2meHelloWorld工程上点击右键->Refactor->Rename,填入“C2D_Com_J2me”后确定,此时将重命名我们的工程。然后展开src下面的java代码,在HelloWorld.java上点击右键->Refactor->Rename,填入 MainMidlet”,后确定。这些过程是为了让我们把配置做的跟Android工程可以互相交换代码,当然在此时的Run下面的Midlet路径也需要更改一下。

到目前为止,我们其实仍然是那个Helloworld的工程,只是更换了名字而已。接下来,我们把Android工程源码src目录的内容拷贝到本工程的src下面,注意,在Android工程下面的game.core包裹上面拷贝(或者直接拷贝Windows文件夹),然后选中本工程的src进行粘贴,此时会出现一个警告,询问是否覆盖,点击确定覆盖。引擎文件夹也使用如上的方法进行拷贝粘贴,因为af下面的文件夹多,所以可以多选以后复制,在本src进行粘贴。完成之后,是代码拷贝完成了,接下来,选中Android工程下面的assets里面的所有内容,粘贴到当前的res目录,完成资源的拷贝。完成后的工程如图所示:

这个时候,会出现很多的红叉叉,代表java代码有错,现在不要紧,是因为我们还没有使用预处理工具来进行预处理。

接下来,我们需要安装一个叫做Antenna的工具,也是一个Eclipse插件。关于Antenna的使用方法见这个页面
http://antenna.sourceforge.net/wtkpreprocess.php
,它是用来预处理Java代码的一个工具,类似C里面的预处理,提供了#define #ifdef等指令,不过因为如果直接写这样的代码,java代码肯定报错,因此就在前面加上了//,看起来为注释,Antenna
则去读取他们进行预处理。

具体的安装方法也在下方有介绍,其实也就是前面我们讲过的一般安装Eclipse插件的过程,插件安装地址是:
http://antenna.sf.net/update

安装过程在此不做详述。

安装完成之后,此时便可以应用Antenna了,我们在工程上点击右键,然后勾选Antenna Preprocessor,这个代表你的工程已经加入预处理了。但是此时代码报错好像变多了,这是因为我们虽然指定了预处理,但是还没有指定预处理的参数。此时,如果我们打开工程属性,点击Antenna,会出现下图所示:

Key-Value这种键值对存放的就是预处理参数,这些参数是存放在Antennaxml配置文件里面的,相当于“固定参数”,我们只能通过边上的search来进行选择不同的配置,一旦配置不同,这里的key-value也将完全不同,上方的Defines是相当于“手动参数”,它的参数名称如果跟下方的“固定参数”相同,则会覆盖他们。当然此时你search的话,也不会改变什么,不会去掉工程里面的错误,我们还需要进一步处理。

因为我在Antenna里面添加了引擎所需的一些参数配置,因此需要你们将我的一些参数更新进去,你可以打开googleCode上下载的那个包裹,里面提供了一个名叫“antenna.eclipse.preprocessor_1.1.8.jar”的文件,你将它拷贝,然后覆盖到你的Eclipse安装文件夹下面的plugins目录,替换掉原有文件,然后重新启动eclipse,重启的时候注意添加clean参数,你可以在命令行里面输入类似“D:\DevTools\eclipse-SDK-3.7.1-win32\eclipse.exe -clean”这样的命令来启动你的eclipse,也可以在快捷方式上面设置,如下图,在目标后面添加” -clean”,这样的话,每次启动Eclipse都会刷新一下Eclipse插件。

重启Eclipse之后,我们再打开刚才的Antenna设置界面,再次进行Search,如图

此时,已经看到我设置的一些我们常用的机型了。里面的参数都是我一一记录的。当然也有可能有些问题,你们使用的时候再小心检查吧。我们选择“Nokia/N73”之后确定。此时,我们的代码就已经切换到了J2me版本了。然后使用前面讲过的方式进行运行。结果如下:

此时,我们可以按上下左右按键进行移动人物了,地图会随之卷动。




更多相关文章

  1. xposed hook框架的使用(一)
  2. Android(安卓)Studio如何import module(针对非gradle)
  3. 移动端开发工程师的AI突围之路
  4. Android源码编译时jdk冲突解决办法
  5. Android(安卓)学习之NDK 安装
  6. Win7+VS2010+cocos2d-x 2.1 Beta3+Sqlite工程向android平台移植
  7. eclipse中为android工程第三方jar包关联源代码的方法
  8. Android(安卓)NDK 简介、工具安装、环境配置
  9. android工程中引入第三方JAR包后安装APK时老是提示找不到库文件

随机推荐

  1. Android 编辑框(EditText)属性
  2. 新浪微博Android客户端SSO授权认证缺陷
  3. android中adb命令大全
  4. Android 性能优化的一些方法
  5. 【android乱七八糟】android体系结构
  6. OpenJDK将对Android开发产生怎样的影响?
  7. Android:EditText
  8. Android UI之EditText注意点收集
  9. flutter state
  10. Android(安卓)NDK学习笔记:Android(安卓)S