我无法为我们的生产应用程序创建Ant构建脚本。
我已经阅读了很多有关Ant和bb-ant-tools的文章。我在Ant和BB上关注了许多stackoverflow问题(下面的注释中引用了这些问题以“链接”这些问题)。我希望获得比通常的“Hello World!”更复杂的脚本的帮助。样式的应用程序。我当前的构建过程完全在Eclipse中运行,并手动完成。
对于这个问题,我想问,如何使用Ant来构建一个使用2个(或更多)不同的库项目(也需要构建)的项目,而根本不使用Eclipse?
我安装了Ant,bb-ant-tools。我已按照基本示例使用这些工具在设备上构建并部署了基本的Hello World。我已经创建了一个构建脚本和一些属性文件。但是当我运行脚本时,最终产品无法在手机上运行(手机UI在启动屏幕上卡住)。
我有3个构建脚本,每个库一个,主应用程序一个。除了项目名称外,这些都是相同的(有时可以合并为一个通用的导入脚本)。 3个Java项目中的每一个都有与其相关的Ant属性文件。我还使用3个通用属性文件定义常量,在JDE和代码签名密码上存储信息。
jde.home=C:/development/tools/bb-jde/jde4.5/components
sigtool.jde = ${jde.home}
sigtool.password = xxx_pass_xxx
output=MySOAP
type=midlet
output=MySDK
type=midlet
更新1:自从最初发布以来,我已经更新了库属性文件。以前,我设置了
type=library
(基于RIM文档)。根据本文(BlackBerry - use own JAR file in own project)中概述的研究,我尝试更改为type=midlet
。这样可以获得更好的结果(至少在我的平台BB JDE 5.0上)。output=MyApp
title=App
type=cldc
vendor=Richard
version=1.0.7
description=A nice app
icon=icon.png
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyApp" default="build">
<!-- BLACKBERRY ANT TOOLS -->
<property name="bb-ant-tools.home" location="C:/development/tools/bb-ant-tools" />
<taskdef resource="bb-ant-defs.xml" classpath="${bb-ant-tools.home}/bb-ant-tools.jar" />
<!-- CONFIG FILES -->
<property file="${common.basedir}/common.properties" />
<property prefix="project" file="project.properties" />
<!-- FOLDERS -->
<property name="dest.dir" location="build" />
<!-- this is empty in the library scripts -->
<path id="import.jars">
<fileset dir="../MySDK/build" includes="*.jar" />
<fileset dir="../MySOAP/build" includes="*.jar" />
</path>
<path id="src.files">
<fileset dir="src" includes="**/*" />
<fileset dir="res" includes="**/*" />
</path>
<!-- TARGET ACTIONS -->
<target name="build" depends="">
<mkdir dir="${dest.dir}" />
<!-- work around a bug requiring app icons to be in the output folder -->
<copy file="${basedir}/res/icon.png" tofile="${dest.dir}/icon.png" />
<rapc
jdehome="${jde.home}"
output="${project.output}"
destdir="${dest.dir}" >
<import refid="import.jars" />
<src refid="src.files" />
<jdp file="${basedir}/project.properties" />
</rapc>
</target>
<target name="sign" depends="build">
<sigtool
codfile="${dest.dir}/${project.output}.cod"
jdehome="${sigtool.jde}"
password="${sigtool.password}" />
</target>
<target name="clean">
<delete dir="${dest.dir}" />
</target>
</project>
更新2:自从最初发布以来,我已经更新了
build.xml
。现在,目标build
将应用程序图标复制到构建输出文件夹(${dest.dir}
)中,以解决bb-ant-tools/rapc中的错误。因此,这是一个非常简单的Ant脚本,除了:
应用程序构建(我的答案below处理了该问题)。
不行。
FWIW,我找到了以下流行的资源,并列出了它们,以便不再需要将它们添加为答案,并帮助以后的任何人查找信息:
最佳答案
这就是我在多个项目中使用的内容。
<macrodef name="compile">
<attribute name="buildversion" />
<attribute name="description" />
<sequential>
<mkdir dir="${build.dir}" />
<rapc output="${cod.name}_bbminterface" destdir="${build.dir}" verbose="false" quiet="true" nowarn="true">
<src>
<fileset dir="${bbminterface.src.dir}"/>
</src>
<import location="./lib/net_rim_bb_qm_platform.jar" />
<jdp type="library" title="${app.name}_bbminterface" vendor="my vendor" version="@{buildversion}">
<entry title="${app.name}_bbminterface" description=""/>
</jdp>
</rapc>
<rapc output="${cod.name}_bbmimpl" destdir="${build.dir}" verbose="false" quiet="true" nowarn="true">
<src>
<fileset dir="${bbmimpl.src.dir}"/>
</src>
<import location="./lib/net_rim_bb_qm_platform.jar" />
<import location="${build.dir}/${cod.name}_bbminterface.jar" />
<jdp type="library" title="${app.name}_bbmimpl" vendor="my vendor" version="@{buildversion}" runonstartup="true" startuptier="6">
<entry title="${app.name}_bbmimpl" description="" runonstartup="true" startuptier="6"/>
</jdp>
</rapc>
<rapc output="${cod.name}" destdir="${build.dir}" verbose="false">
<src>
<fileset dir="${tmpsrc.dir}" />
</src>
<src>
<fileset dir="${res.dir}" />
</src>
<src>
<fileset file="${lib.dir}/paymentapi.jar" />
</src>
<import location="./lib/net_rim_bb_qm_platform.jar" />
<import location="${build.dir}/${cod.name}_bbminterface.jar"/>
<jdp type="cldc" title="${app.name}" vendor="my vendor" icon="../res/icon.png" version="@{buildversion}" description="@{description}" startuptier="7" ribbonposition="0">
<entry title="${app.name}" icon="../res/icon.png" description="@{description}" runonstartup="true" arguments="boot" systemmodule="true" startuptier="7" ribbonposition="0" />
<entry title="${app.name}" icon="../res/icon.png" description="@{description}" arguments="daemon" runonstartup="true" systemmodule="true" startuptier="7" ribbonposition="0" />
</jdp>
</rapc>
</sequential>
</macrodef>
这是编译代码。我们先编译几个库,然后编译应用程序,链接刚刚创建的库。
然后进行签名:
<target name="sign" description="Sign the cod file">
<sigtool codfile="${build.dir}/${cod.name}_bbminterface.cod" password=""/>
<sigtool codfile="${build.dir}/${cod.name}_bbmimpl.cod" password=""/>
<sigtool codfile="${build.dir}/${cod.name}.cod" password="" />
</target>
然后上传到我们的OTA服务器:
关于BlackBerry-适用于更复杂应用程序的Ant构建脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8942230/