移植J2ME游戏到Android平台简介
- 格式:docx
- 大小:644.81 KB
- 文档页数:16
1.1跟我学J2ME手机应用开发——J2ME概述和系统结构1.1.1与J2ME有关的术语1、3G移动相关技术目前应用在手机上的操作系统主要有Symbian 、Windows CE 、MacOSX、PalmOS和Linux 几种。
Symbian OS(中文译音“塞班系统”)由诺基亚、索尼爱立信、摩托罗拉、西门子、等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。
它是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、SyncML、以及3G技术。
微软Windows CE 被设计成针对小型设备(它是典型的拥有有限内存的无磁盘系统)的通用操作系统。
iPhone内置MacOSX系统,将创新的移动电话、可触摸宽屏iPod以及具有桌面级电子邮件、网页浏览、搜索和地图功能的突破性因特网通信设备这三种产品完美地融为一体。
Palm OS操作系统由Palm公司自行开发的,并授权给Handspring、索尼和高通等设备厂家,这种操作系统更倾向于PDA的操作系统。
ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
适用于嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
随着J2ME的应用,它为移动互联引入了一种新的应用模式,即手机从移动互联网上下载各种应用程序,并在手机中离线运行这些程序。
由于定义了可执行程序下载的标准,并在手机上创立了可执行环境,就形成一种新型的应用模式。
这实际正是Java语言设计最初的目标领域,但是后来在PC和服务器上得到了发展。
2、JCP与JSR(1)JCP的主要职责在于维护Java技术的发展JCP(Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。
第26卷第11期 计算机应用与软件Vol 126No .112009年11月 Computer App licati ons and Soft w are Nov .2009基于J2M E 的向手机移植游戏软件方法及其实现余秋冬 徐 辉(天津农学院计算机科学与技术系 天津300384)收稿日期:2009-03-30。
余秋冬,讲师,主研领域:数据库,数据挖掘。
摘 要 Java 语言面向对象的优势使得开发游戏变得非常容易。
作为I T 产业的剩余部分,游戏行业中最新的热点就是可移动性。
程序的界面和运作方式继承于传统的PC 游戏,使用J2M E 技术将PC 游戏泡泡龙移植到手机上来。
着重介绍了J2M E 的相关技术及本程序的结构分析、定义画面及跳转算法的细节实现。
关键词 J2ME 手机游戏 Java 泡泡龙J2M E 2BASED APPROACH FO R TRANSPLANT I NG GAM E S O FT W ARE TOMO B I L E PHO NE AND I TS I M PL E M ENTAT I O NYu Q iudong Xu Hui(D epart m ent of Co m puter Science and Technology,Tianjin Agriculture U niversity,Tianjin 300384,China )Abstract The object 2oriented advantage of Java makes it very easy t o devel op ga mes .A s the re maining part in I T industry,the latest hots 2pot in ga me industry is the mobility .The app licati on reported in the paper inherits the interface and operating manner of traditi onal PC ga me and trans p lants the popular PC ga me Bubble Shooter t o mobile phone using J2ME .The paper f ocuses on the intr oducti on of J2M E and its rela 2tive technol ogy as well as the p r ogra m ’s structure analysis,and the detailed i m p le mentati on of i m ages defining and ju mp algorithm.Keywords J2M E Mobile ga me Java Bubble shooter0 引 言随着3G 时代的到来,手机游戏市场再度成为业界关注的焦点。
1.1 J2ME及其移植1.1.1 Java家族1.1.1.1 Java历史Figure 1 Java historyØJava2后根据特性分为3种版本:J2EE, J2SE, J2ME。
ØJava 2前嵌入式Java产生很多分支,直到J2ME统一标准的诞生。
1.1.1.2 Java2Figure 2 Java hist大体上的包含,并非严格的子集的关系,每一个版本都有自己的扩充类库。
1.1.2 Java架构图Figure 3 Java history1.1.3 规范1.1.3.1 J2ME基础规范ØJ2ME的每种相关技术都经过一定的步骤来制定。
这个过程叫做JCP(JavaCommunity Process)。
ØExpert Group由相关领域的各家厂商的代表以及专家组成。
ØJSR(Java Specification Request)就是Expert Group根据JCP的流程所制定的各种规范。
1.1.3.2 手机上的基础规范ØJ2ME Platform (JSR-068)1.1.3.3 Configuration, Profile and OptionalØConfiguration: 定义硬件必须具备的能力,例如ROM, RAM等;并且定义了一组低级的API(通常是核心类库的子集)ØProfile:针对不同机器的特性定义了高级API,这些高级API通常是与其它平台不相关的扩充类库。
ØOptional Packages: 就算同种类型的设备,其功能也有不同,主要依赖于硬件。
例如: 蓝牙,红外等。
1.1.3.3.1 最底层 – ConfigurationØCLDC: Connected Limited Device, 可连接的资源有限(运算能力, 电力等)的设备。
例如:手机, PDA等。
-- CLDC1.1 (JSR139)ØCDC: Connected Device,可连接,资源相对无限的设备。
移植JME游戏Android平台————————————————————————————————作者:————————————————————————————————日期:2i移植J2ME 游戏到Android 平台版本: 0.1 日期:4/21/2011ii 作者:陈旭iii Revision HistoryVersion NumberDateAuthorChanges Made0.1 4/21/11陈旭 草稿i Table of ContentsRevision History .......................................................................... i ii Table of Contents ......................................................................... i 1. Project Scope ......................................................................... 1 1.1. Project Objectives and Deliverables ........................................................................ 1 1.2. Strategy .................................................................................................................... 1 1.3. Constraints ............................................................................................................... 2 1.4. Project Lifecycle ...................................................................................................... 2 2. Training Plan .......................................................................... 2 3. Porting Java ME to run on Android platform .................................... 3 3.1. 原理......................................................................................................................... 3 3.2. 移植J2ME 游戏到Android 平台 .......................................................................... 4 3.3. 测试....................................................................................................................... 11 3.4. 修改BUG 和维护 (11)1 1. Project ScopeThe project scope includes the necessary work to complete the project successfully, including a definition of what is and is not being performed.本项目主要是将已有的J2ME 游戏移植到Android 平台,并封装J2ME API 的Android 实现,并产生一套移植规范来指导单机部的J2ME 游戏移植到Android 平台,方便开发人员快读推出J2ME 游戏的Android 版本产品,以后公司的J2ME 程序都可遵循此规范来移植到Android 平台。
J2ME Java平台开发随着移动设备的普及和功能的不断扩展,Java 2 Platform, Micro Edition (J2ME) 在移动应用开发中扮演着重要的角色。
J2ME 是一种基于 Java 的软件平台,专门用于开发嵌入式设备上的应用程序。
本文将介绍 J2ME 的基本概念、特点和开发流程,并探讨在 J2ME Java 平台开发中的一些最佳实践。
一、J2ME 概述J2ME 是 Java 2 Platform, Micro Edition 的缩写,是为嵌入式设备提供的一种轻量级的 Java 平台。
与其它版本的 Java 平台相比,J2ME 在资源消耗上更加倾向于节省,并且适应于具有有限计算和存储能力的移动设备。
J2ME 平台包括了三个主要的配置(Configuration):CLDC(Connected Limited Device Configuration)、CDC(Connected Device Configuration)和 Foundation Profile。
其中,CLDC 是 J2ME 平台最常用的配置,适用于移动电话等较低端设备的开发。
二、J2ME 特点1. 跨平台性:由于 J2ME 是基于 Java 平台的,可以在不同的嵌入式设备上运行。
这意味着开发者只需编写一次代码,就可以将应用程序部署到多个不同设备上,极大地提高了开发效率和应用程序的可移植性。
2. 硬件适配性:J2ME 提供了一系列标准的 API,使得开发者可以与不同类型的硬件进行交互。
通过这些 API,开发者可轻松地访问设备的底层功能,如显示屏、网络连接、摄像头等,从而实现更加丰富和贴近用户需求的应用程序。
3. 轻量级:J2ME 平台的编译和执行环境相对较小,这使得应用程序在设备中的占用空间更小,可以运行在资源有限的设备上。
这也使得开发者能够方便地将应用程序传输到移动设备中,提高了应用程序的易传播性和部署效率。
移植J2ME游戏到Android平台版本:日期:4/21/2011作者:陈旭Revision HistoryTable of ContentsRevision History .......................................................................... i ii Table of Contents . (i)1. Project Scope (1)1.1. Project Objectives and Deliverables (1)1.2. Strategy (1)1.3. Constraints (2)1.4. Project Lifecycle (2)2. Training Plan (2)3. Porting Java ME to run on Android platform (3)3.1. 原理 (3)3.2. 移植J2ME游戏到Android平台 (5)3.3. 测试 (12)3.4. 修改BUG和维护 (12)-i1.Project ScopeThe project scope includes the necessary work to complete the project successfully, including a definition of what is and is not being performed.本项目主要是将已有的J2ME游戏移植到Android平台,并封装J2ME API的Android实现,并产生一套移植规范来指导单机部的J2ME游戏移植到Android平台,方便开发人员快读推出J2ME游戏的Android版本产品,以后公司的J2ME程序都可遵循此规范来移植到Android平台。
Overview<Project overview>1.1.Project Objectives and Deliverables1.2.StrategyHigh-level approach to meeting objectives-11.3.Constraints1.4.Project Lifecycle2.Training Plan-21 天陈旭对进行Android版本移植的程序员进行集中Android基础和移植J2ME培训。
3.Porting Java ME to run on Android platform3.1.原理智能机越来越普及,而Android系统的手机在智能机市场越来越普及,我们的游戏主要是J2ME游戏,为了更快的融入Android生态系统,利用已有的J2ME游戏资源,这就需要把J2ME游戏移植到Android平台。
恰Android SDK主要是以JAVA 作为其主要开发语言,这就为我们移植J2ME游戏到Android平台提供了便利。
移植的主要工作是开发利用Android SDK实现J2ME API的库,以后都引用为DroidLib),这样J2ME开发人员在无需改变J2ME游戏代码的情况下,通过调用此库,就可以让J2ME游戏轻松的运行于Android平台。
DroidLib利用插件的形式来提供功能和接口(J2ME API)的分离,如果以后有其他平台的需要,我们只需更换底层的实现,就可以移植到新平台,当然现在主要是移植到Android平台,主要是考虑到以后平台的扩展。
DroidLib主要引入了,与一般的JAR无二义,当Android工程导入后,便将其字节码编译成DEX格式。
其实DroidLib还可以做成一般Android library,只是暴露了太多的实现细节,不便于以后的维护和升级,暂以这种形式分发。
由于Android SDK只支持JDK 以上版本,所以以前的基于JDK 的游戏都要重新引用JDK。
DroidLib不同于Android Library,我们不能在其中定义Layout的布局,或者资源的引用。
所以在此库中尽量少添加HARD CODE, 主要是考虑到以后资源的本地化,但是又不可避免,所以我们可以把HARD CODE放到一个独立的JAVA文件中集中管理。
-3DroidLib 主要包含了J2ME API的定义和Android SDK的实现,并提供了部分NOKIA的API的实现,封装于包中。
定义了和J2ME API相同的接口,而包则提供了其实现,如果看过SUN提供的J2ME源代码,就会发现也是采用了类似的构建结构。
只是这里提供的是基于Android SDK的实现。
以上这些已经可以让我们对DroidLib有了大致的了解,下面就是如何利用此库来移植J2ME游戏到Android平台。
-43.2.移植J2ME游戏到Android平台1)构建Android工程首先就是构建Android项目,打包APK,这是运行于Android平台的标准应用。
I.下载最新的Eclipse or above), Android SDK和JDK or above),配置Eclipse,添加支持Android开发的插件。
网上有很多关于配置Android开发的文章,可以参考一下。
II.下载不同版本的Android SDK,这个需要使用Android SDK自带的SDK Manager来下载不同版本的SDK。
III.新建一Android工程,有很多介绍如何创建Android工程的资料,可以试着创建自己的Android工程,对Android的目录结构有基本的了解,以及如何调试Android应用程序。
-5Src:所有源代码的存放目录Gen:R类包含所有res文件夹中所有资源ID,当资源变动时,R类会为新资源(如字符串)自动生成ID,勿改。
Res:包含所有的Android工程资源,图标,Layout,字符串,本地化的资源等等。
资源中的ID会在R类中有对应的值,在Android工程中只需引用ID值既可。
Asserts:存放生资源的地方,此目录下的文件均不会被压缩,我们的游戏中BIN资源均需放于此。
; Android 工程的配置文件,比如权限,注册Activity,Service等等。
: 混淆Android代码的配置文件。
: Android工程的默认属性文件,在此文件一般指定所对应的Android版本,是否是Android Library工程,还有混淆代码开关等等。
IV.有了前面的准备工作,马上就要真正开始移植我们的J2ME游戏.拿到J2ME的源文件后,找到不受手机硬件限制的机型,我们以N73为例,修改.设置为触屏。
运行.拿到src文件夹下的所有代码,复制到Android工程的src目录下;复制res下的bin文件夹到Android工程的asserts文件夹下。
-6在Android工程的asserts文件夹下新建META-INF,把J2ME游戏JAR中拷到此处。
我们需要读取文件来知道当前的CMIDlet类。
导入后,你的工程中很多ERROR都会消失掉。
当我们创建Android工程的时候,会新建一个Activity类,此类就是我们Android应用的入口类。
修改其继承关系,使其继承自DroidLibActivity,并引入其包。
下面主要就是对Android工程的具体单项进行修改了:a.替换源文件中所有的DataInputStream::read()或InputStream::read()为DataInputStream::readFully(), 这是Android SDK的一个bug,在最新的SDK中未见修复。
如果原代码调用InputStream,请用InputStream in = (“bin\”);DataInputStream dis = new DataInputStream(in);b.替换工程中所有通过””.getClass().getResourceAsStream() 或者().getResourceAsStream(), 为实际上,getClass()在Android平台并不能正常工作,也是平台移植方面又一个令人遗憾的地方。
如果只是进行简单的替换,每个文件又要导入包,我们可以在CTools类写一方法来封装一下。
public static InputStream getResourceAsStream(Stringfilename){InputStream is = null;try {is = } catch (IOException e) {();}return is;}c.最好把代码中Hard Code都提取到一个文件中,便于以后维护和本地化,如果非要使用HARD CODE,我们可以用一种格式来标识(比如/*MSG0*/”游戏”),这样我们就知道这种字符串是不需要翻译的。
也算是一种好一些的编程风格。
d.由于Android平台方面的原因,需要检查B IN目录下的文件,如果大小超过1M,把文件名的格式改为mp3格式,相应的修改代码。
e.至此,我们移植工作初步完成,打开模拟器,运行我们的程序。
当然还有很多工作要细化:DroidLib库提供了自适应屏幕功能,而我们默认的是N73的资源(320*240,这在Android的大屏显得特别的粗糙,建议修改源程序,改成(480*320)。
具体在什么位置,你们应该知道。
修改地表层的数据,使其适应480*320的屏幕,调整屏幕的触控位置等等。
V.调试游戏也许第一次你的程序不能运行成功,这就要发挥Android强大的调试功能了。
如下的截图就是调试的入口。
打开logcat 面板,如果你的Android应用发生异常,或者调试的时候输出一些参数,logcat就显得很有用了,可以参看Android SDKReference了解更多关于LOGCAT的使用。
VI.完善Android游戏现在已有的J2ME游戏大都不支持翻屏,相应地如果不小心翻转了Android手机,应用崩溃 . 为了不让悲剧再次发生,在Android的配置文件直接将其设置为只支持横屏或竖屏。
<activity android:name=".ReMaActivity"android:label="@string/app_name"android:configChanges="keyboardHidden|orientation"android:screenOrientation="landscape">修改文件添加如下设置,如果MIDlet也被混淆了,那我们原来的J2ME入口类在哪里呢,所以保留是必须的。
-keep public class打开混淆器需修改文件,添加高亮的代码部分,混淆器就其作用了,用java-decompiler打开应用的JAR,全剩下a, b, c, d…了。