`
祖祖cool
  • 浏览: 52200 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

换中思路,Eclipse中用Ant来编译J2me

阅读更多
相信很多朋友都有过这样的经理,不小心把eclipse的一个j2me项目中的

verified/classes目录中的东东删除了。之后才发现eclipse再也不会在这个目录

中生成class了,这下子就可纳闷了。
  
  eclipse为何不是跟netbeans那样用ant来编译、运行j2me的项目呢?我近期都

在研究ant,城市用了2小时做了个比较完善的ant脚本可以来弥补一下eclipse对我

心情的打击了。
  
  下面我把这个脚本和源程序(含demo)贡献出来,大家一起研究探讨。
  
  完成以下功能:
  1.建立基本目录框架
  2.编译src目录中的源文件
  3.调用preverify.exe对类文件进行验证
  4.将类文件生成jar包
  5.调用proguard类对jar包进行混淆,并解压缩
  6.将经过混淆、解压缩后的类、资源文件生成jar包,复制src目录中的jad文

件,完成程序部署
  7.调用emulator运行程序
  
  用法:
  只需要修改一下CONF.properties文件中的属性:
  1.midp.lib.dir-WTK的lib目录路径(位于CONF.properties文件中)
  2.midp.lib.path-根据需要扩展使用的jar(位于CONF.properties文件中)
  3.programName-生成jar/jad文件的名字
  在本脚本中可修改的地方:
  preverify.exe和emulator.exe的具体参数可以根据需要修改。
  
  注意:
  1.src目录中需要有MANIFEST.MF和${programName}.jar文件,这些将用在生成

jar和部署程序时.
  2.res目录中放置使用的png图片文件.
  
  附加类库:
  混淆器类Proguard-位于lib中。
  
  文件说明:
  CONF.properties:配置属性文件
  GEN.properties:生成MANIFEST.MF和${programName}.jad文件的替换属性文件
  JAD.tmp:生成jad文件用到的替换模板文件
  MANIFEST.tmp:生成MANIFEST.MF文件用到的替换模板文件
  
  <?xml version="1.0" encoding="GBK"?>
  <project name="automake" default="end" basedir=".">
  <property file="CONF.properties"/>
  <property name="src.dir" value="${basedir}\src"/>
  <property name="res.dir" value="${basedir}\res"/>
  <property name="build.dir" value="${basedir}\build"/>
  <property name="deploy.dir" value="${basedir}\deploy"/>
  <property name="package.dir" value="${basedir}\package"/>
  <property name="package.extract.dir" value="${package.dir}

\extract"/>
  <property name="preverified.dir" value="${basedir}\preverified"/>
  <property name="preverified.noObfusedClass.dir"

value="${preverified.dir}\noObfused\classes"/>
  <property name="preverified.obfusedClass.dir"

value="${preverified.dir}\obfused\classes"/>
  <property name="preverify.bin" value="${wtk.home.dir}

\bin\preverify.exe"/>
  <property name="emulator.bin" value="${wtk.home.dir}

\bin\emulator.exe"/>
  <property name="proguard.lib.dir" value="${basedir}\lib"/>
  <property name="jad.file" value="${programName}.jad"/>
  <target name="init" description="初始化环境">
  <echo message="初始化目录"/>
  <delete dir="${build.dir}"/>
  <delete dir="${deploy.dir}"/>
  <delete dir="${package.dir}"/>
  <delete dir="${preverified.dir}"/>
  <mkdir dir="${build.dir}"/>
  <mkdir dir="${deploy.dir}"/>
  <mkdir dir="${package.dir}"/>
  <mkdir dir="${package.extract.dir}"/>
  <mkdir dir="${preverified.dir}"/>
  <mkdir dir="${preverified.noObfusedClass.dir}"/>
  <mkdir dir="${preverified.obfusedClass.dir}"/>
  </target>
  <target name="complie" depends="init" description="编译">
  <echo message="编译程序"/>
  <javac srcdir="${src.dir}" destdir="${build.dir}">
  <bootclasspath path="${midp.lib.dir}"/>
  <classpath>
  <fileset dir="${midp.lib.dir}" includes="*.jar"/>
  </classpath>
  </javac>
  </target>
  <target name="verifyForNoObfuscate" description="验证j2me的class,将

验证后的class输出到${preverified.noObfusedClass.dir}">
  <echo message="验证生成的class,将验证后的class输出到

${preverified.noObfusedClass.dir}"/>
  <exec executable="${preverify.bin}" searchpath="false">
  <arg line="-classpath ${midp.lib.path}"/>
  <arg line="-d ${preverified.noObfusedClass.dir}"/>
  <arg line="${build.dir}"/>
  </exec>
  </target>
  <target name="genManifest" description="根据模板属性文件的值生成

Manifest文件">
  <echo message="根据模板属性文件的值生成Manifest文件"/>
  <!--
  使用${programName}替换掉属性文件GEN.properties中的@PROGRAMNAME@
  -->
  <replace file="GEN.properties"
  token="@PROGRAMNAME@"
  value="${programName}"
  />
  <!--
  使用GEN.properties文件中的属性值替换掉模板文件MANIFEST.tmp中的对应属

性值,
  将替换后的数据复制到${src.dir}\MANIFEST.MF
  -->
  <copy file="MANIFEST.tmp"
  tofile="${src.dir}\MANIFEST.MF">
  <filterset begintoken="@" endtoken="@">
  <filtersfile file="GEN.properties"/>
  </filterset>
  </copy>
  </target>
  <target name="package" description="将class打包,输出到

${package.dir}">
  <echo message="将class打包,输出到${package.dir}"/>
  <jar basedir="${preverified.noObfusedClass.dir}"
  jarfile="${package.dir}\${programName}-noObfused.jar"
  manifest="${src.dir}\MANIFEST.MF"   >
  <fileset dir="${res.dir}" includes="**/*.png"/>
  </jar>
  </target>
  <target name="obfuscate" description="对打包后的jar文件进行混淆,然后

解压缩至${package.extract.dir}">   <echo message="对打包后的jar文件进

行混淆,然后解压缩至${package.extract.dir}"/>
  <java fork="true" classname="proguard.ProGuard">
  <classpath path="${proguard.lib.dir}\proguard.jar"/>
  <arg line="-libraryjars ${midp.lib.path}"/>
  <arg line="-injar ${package.dir}\${programName}-noObfused.jar"/>
  <arg line="-outjar ${package.dir}\${programName}-obfused.jar"/>
  <!--保留MIDlet的类声明不被混淆-->
  <arg line="-keep 'public class * extends

javax.microedition.midlet.MIDlet'"/>
  <!--打印被保留的类名-->
  <arg line="-printseeds"/>
  </java>
  <unjar src="${package.dir}\${programName}-obfused.jar"
  dest="${package.extract.dir}"   />
  </target>
  <target name="verifyForObfuscate" description="验证被混淆的class,输

出到${preverified.obfusedClass.dir}">
  <echo message="验证被混淆的class,输出到

${preverified.obfusedClass.dir}"/>   <exec

executable="${preverify.bin}" searchpath="false">
  <arg line="-classpath ${midp.lib.path}"/>
  <arg line="-d ${preverified.obfusedClass.dir}"/>
  <arg line="${package.extract.dir}"/>
  </exec>
  <copy todir="${preverified.obfusedClass.dir}">
  <fileset dir="${package.extract.dir}" includes="**/*.png"/>
  </copy>
  </target>
  <target name="deploy" description="将经过验证的混淆后的class打包,部

署在delpoy目录">
  <echo message="将经过验证的混淆后的class打包,部署在${deploy.dir}目

录"/>
  <jar basedir="${preverified.obfusedClass.dir}"
  jarfile="${deploy.dir}\${programName}.jar"
  manifest="${src.dir}\MANIFEST.MF"
  >
  <fileset dir="${preverified.obfusedClass.dir}"

includes="**/*.class;*.png"/>
  </jar>
  </target>
  <target name="genJad" description="在${deploy.dir}目录生成JAD文件">
  <echo message="在${deploy.dir}目录生成JAD文件"/>
  <length file="${deploy.dir}\${programName}.jar" property="jarsize"/>
  <echo message="获得jar文件长度:${jarsize}"/>
  <replace file="GEN.properties"
  token="@JARSIZE@"
  value="${jarsize}"
  />
  <replace file="GEN.properties"
  token="@PROGRAMNAME@"
  value="${programName}"
  />
  <copy file="JAD.tmp" tofile="${deploy.dir}\${programName}.jad">
  <filterset begintoken="@" endtoken="@">
  <filtersfile file="GEN.properties"/>
  </filterset>
  </copy>
  </target>
3
3
分享到:
评论

相关推荐

    用ant编译J2ME代码的build.xml模板

    在“用ant编译J2ME代码的build.xml模板”中,我们可能会看到类似`clean`、`compile`、`jar`这样的目标,分别对应清理、编译和打包的操作。 `clean`目标通常用于删除先前生成的临时或输出文件,以确保每次构建都是...

    Eclipse3.5.2中文包+J2ME插件

    在"描述"中,"Eclipse3.5.2中文包+J2ME插件"的组合意味着用户可以同时获得Eclipse的中文界面和J2ME开发工具,为Java移动开发提供了一个完整的本地化环境。 "site.xml"文件在Eclipse插件安装中扮演着重要的角色。它...

    tankes.rar_Eclipse_eclipse j2me_j2me_j2me 3d

    j2me开发的坦克3d源代码开发工具eclipse 3.1,提供给爱好j2me的朋友

    使用Eclipse调试J2ME应用程序.zip_Eclipse_eclipse j2me_j2me_zip

    总结,调试J2ME应用程序在Eclipse中是一个相对直观的过程,需要正确配置J2ME环境,编写和理解MIDlet生命周期,以及充分利用Eclipse的调试工具。通过上述步骤和基础知识,开发者可以更有效地定位和解决问题,从而提高...

    J2ME-2.rar_Eclipse_eclipse j2me_j2me eclipse

    Eclipse开发J2ME程序之安装配置

    eclipse中配置J2ME开发环境

    以下是如何在Eclipse中配置J2ME开发环境的详细步骤,以及一个简单的"HelloWorld"案例。 首先,你需要确保已经安装了Eclipse IDE。如果尚未安装,可以从Eclipse官方网站下载适用于Java开发的版本。安装完成后,启动...

    J2ME之Eclipse环境搭建教程小结

    eclipseme.feature_1.7.9_site.zip 导入的网址 博文链接:https://chenchuxin.iteye.com/blog/189134

    在eclipse中怎样使用j2me

    在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me

    Eclipse 搭建j2me开发环境

    1. **通过Eclipse Marketplace**:在Eclipse中,选择“Help” &gt; “Eclipse Marketplace”,在搜索框中输入“MDDT”或“J2ME”,找到“Mobile and Device Development Tools”后点击“Install”。 2. **通过Update ...

    Eclipse+EclipseME+WTK搭建J2ME开发环境

    在 Eclipse 中,选择“文件”&gt;“新建”&gt;“其他”&gt;“J2ME”&gt;“MIDlet”来创建新的 J2ME 应用程序。 - 编写代码,使用 EclipseME 提供的工具进行编译、测试和打包。 通过以上步骤,一个完整的 J2ME 开发环境就建立...

    eclipse+wtk写的j2me电话本程序

    - 在Eclipse中,使用新项目向导创建一个J2ME项目,选择适当的配置,如CLDC(Connected Limited Device Configuration)和MIDP(Mobile Information Device Profile)。 - 创建源代码目录结构,如src/main/java,...

    eclipse开发j2me环境配置

    - 在Eclipse中选择Window -&gt; Preferences -&gt; J2ME -&gt; Packaging -&gt; Obfuscation,配置混淆器的路径。 - 配置完成后,可以在项目设置中启用混淆选项,以提高代码的安全性。 #### 六、总结 以上就是关于在Eclipse...

    Eclipse3.4.2配置并部署一个J2ME项目

    6. **部署和运行J2ME程序**:在Eclipse中,右键点击源代码文件(如FrmMain.java),选择“Debug As”-&gt;“Emulated J2ME Midlet”来运行模拟器。J2ME程序可以在Sun公司的模拟器上运行,也可以发布到特定设备的模拟器...

    j2me 环境搭建 eclipseMe Eclipse

    j2me 环境搭建 eclipse Eclipse j2me j2me 环境搭建 eclipse Eclipse j2me j2me 环境搭建 eclipse Eclipse j2me j2me 环境搭建 eclipse Eclipse j2me

    j2me的eclipse配置

    本文详细介绍了如何在 Eclipse 中配置 J2ME 开发环境,包括 Eclipse 3.2.2、EclipseME 1.6.7 和 WTK 2.5 的安装与配置步骤,以及创建和调试 HelloWorld 示例的方法。此外,还提供了使用 Nokia 仿真器的指导。通过...

    Eclipse的j2me开发.doc

    2. **项目设置**:在Eclipse中创建一个新的j2ME项目,需要指定项目类型(如MIDlet Suite),并配置项目的构建路径,包括导入必要的j2ME库。 3. **编写代码**:j2ME应用程序主要由MIDlets组成,它们是运行在j2ME设备...

    用Eclipse搭建J2ME开发环境

    为了在Eclipse中更好地支持J2ME开发,需要安装插件,比如MobiOne Studio或J2ME Polish。这些插件提供了图形化界面和自动化构建工具。你可以通过Eclipse的内置Marketplace搜索并安装。 ### 7. 创建J2ME项目 在...

    j2me反编译重命名助手

    在实际应用中,J2ME反编译重命名助手可能用于以下几个场景: - 开发者调试已发布的J2ME应用,查找bug或优化性能。 - 教育目的,让学生能够学习和理解已编译的J2ME代码。 - 安全分析,检查应用是否存在恶意行为或漏洞...

    eclipse j2me插件

    在Eclipse中,你可以使用这个文件来添加新的软件站点,从而通过Eclipse的内置更新管理器来安装或更新插件。 3. **features** 和 **plugins** 目录: 这两个目录分别包含了Eclipse插件的特征(features)和插件...

    基于Eclipse环境的J2ME应用程序开发

    在Eclipse中,可以通过“Help” &gt; “Install New Software”来添加J2ME插件,例如WTK Plugin或NetBeans插件,它们能提供J2ME项目的支持。 **二、创建J2ME项目** 在Eclipse中,你可以通过“File” &gt; “New” &gt; ...

Global site tag (gtag.js) - Google Analytics