eSn*_*iff 5 blackberry blackberry-simulator blackberry-eclipse-plugin
我正在开发一个Blackberry Java开发人员可以导入到他们项目中的库项目.它使用受保护的RIM API,要求它进行代码签名,我已经完成了.但是,我无法让我的Jar导入并使用简单的helloWorld应用程序.我正在使用eclipse插件Blackberry-JDE.
自从我找到解决方案后,我删除了我尝试过的东西,只留下了解决方案......
构建SDK/Libary(使用BB-ANT-TOOLS,无论是在eclipse还是独立)
步骤:
A)我必须
使用BB-ANT-TOOLS 将我的SDK的jar构建为'cldc'应用程序而不是'library' 项目.这解决了我上面遇到的大部分问题.
B)然后我添加了一个ANT任务来从步骤A中获取生成的JAR并执行以下操作:
注意:我写了一个砍下来的BB-ANT-TOOLS蚂蚁脚本,以展示如何使用它来完成上述两个步骤.该脚本包含在下面.
将SDK jar作为最终用户或在您自己的项目中使用.
然后在bb-eclipse中集成jar,你可以执行以下操作:
A)将jar添加到BuildPath
B)在"订购和导出"选项卡上的"Java构建路径"下,选择要导出的jar.这会导致rapc将jar构建到COD文件中,因此最后只有一个COD.
现在当用户构建这个项目时,jar会被集成到最终的cod文件中,并且很容易传送到手机或SIM卡.
<?xml version="1.0" encoding="UTF-8"?>
<project name="XXXXXMobileLib" default="full" basedir=".">
<description>
Description: Builds the BBLIB. Uses bb-ant-tools to build, sign and package for blackberry.
</description>
<taskdef resource="bb-ant-defs.xml" classpath="BIN/BB_ANT_lib/bb-ant-tools.1.x.x.jar" />
<property environment="env" />
<!-- User defined Vars -->
<property name="builderRoot" value="." />
<property name="SIG_PASSWORD" value="XXXXXXXXX" />
<property name="javaHome" value="${env.JAVA_HOME}" />
<echo>${javaHome}</echo>
<property name="jdehome" value="${env.BBJDE_HOME}\" />
<property name="simulator" value="${jdehome}\simulator" />
<property name="bin" value="${jdehome}\bin" />
<property name="releaseBuildOut" value="${builderRoot}\release_out\" />
<property name="srcBuildOut" value="${builderRoot}\srcBuild_out\" />
<property name="JarFixTemp" value="${builderRoot}\.tempZip\" />
<property name="buildVersion" value="${env.BUILD_VERSION}" />
<property name="application_id" value="com.XXXXX.foo.bar.${buildVersion}" />
<property name="application_name" value="XXXXX BBLIB v${buildVersion}" />
<property name="application_desc" value="XXXXX BBLIB v${buildVersion}" />
<property name="application_vendor" value="XXXXX" />
<property name="applicaiton_filename" value="XXXXXBBLIB${buildVersion}" />
<property name="applicaiton_srcs" value="${builderRoot}/src_in_location/" />
<property name="zipOutName" value="XXXXX-${buildVersion}BBLIB.zip" />
<property name="zipOutNameJavadocs" value="XXXXX-${buildVersion}BBLIBjavadoc.zip" />
<property name="jde.home" location="${jdehome}" />
<!--
MAIN ENTRY TARGET.
-->
<target name="full" depends="clean,javadoc,buildRIM,FixJarManifest,sign,distribute" />
<target name="FixJarManifest">
<tstamp/>
<mkdir dir="${JarFixTemp}"/>
<unzip src="${builderRoot}/release_out/${applicaiton_filename}.jar" dest="${JarFixTemp}"/>
<delete dir="${builderRoot}/release_out/${applicaiton_filename}.jar"/>
<!-- For some reason rapc puts this line into the manifest file, but it breaks the JDE plug-in when you try to
set the jar for export. Giving an error like this "Project {0} missing......"
To avoid having an empty line in the manifest, Im just injecting a new attribute BuildTime-->
<replace file="${JarFixTemp}/META-INF/MANIFEST.MF" token="MicroEdition-Profile: MIDP-2.0" value="Build-Time: ${DSTAMP}-${TSTAMP}"/>
<zip destfile="${builderRoot}/release_out/${applicaiton_filename}.jar"
basedir="${JarFixTemp}"
/>
<delete dir="${JarFixTemp}"/>
</target>
<!-- Cleanup any existing files in the outdir -->
<target name="clean">
<delete>
<fileset dir="${releaseBuildOut}" includes="**" />
</delete>
</target>
<!-- Generate the Javadocs -->
<target name="javadoc">
<javadoc access="public" destdir="${releaseBuildOut}/JavaDocs" author="true" version="true" use="true" defaultexcludes="yes" excludepackagenames="net.rim.*" windowtitle="FOO_BAR">
<fileset dir="${applicaiton_srcs}/XXXXXMobileLib">
<include name="src/**/*.java" />
</fileset>
</javadoc>
<zip destfile="${releaseBuildOut}/${zipOutNameJavadocs}" basedir="${releaseBuildOut}/JavaDocs" />
<delete dir="${releaseBuildOut}/JavaDocs"/>
</target>
<target name="buildRIM" description="Builds Project">
<rapc jdehome="${jdehome}" jdkhome="${javaHome}" destdir="${releaseBuildOut}" output="${applicaiton_filename}" quiet="false">
<!-- Building as a cldc applicaiton, so it can be packaged up with our final cod, as a single cod -->
<jdp type="cldc"
title="${application_desc}"
vendor="${application_vendor}"
version="${buildVersion}"
description="${application_desc}"
arguments=""
systemmodule="false"
runonstartup="false"
startuptier="7"
ribbonposition="0">
</jdp>
<src>
<fileset dir="${applicaiton_srcs}/MobileLib">
<include name="src/**/*.java" />
</fileset>
</src>
</rapc>
</target>
<target name="sign" depends="clean,buildRIM">
<sigtool password="${SIG_PASSWORD}">
<fileset dir="${releaseBuildOut}" includes="*.cod" />
</sigtool>
<echo>Contents of the signingtool's logfile: </echo>
<echo file="LogFile.txt" />
</target>
<!-- build and distribute the jar -->
<target name="distribute" depends="buildRIM" description="generate the distribution">
<alx destdir="${releaseBuildOut}" filename="${applicaiton_filename}.alx">
<application id="${application_id}" name="${application_name}">
<codset>
<fileset dir="${releaseBuildOut}" includes="*.cod" />
</codset>
</application>
</alx>
<!-- Create release zip -->
<delete file="${releaseBuildOut}/${zipOutName}" />
<zip destfile="${releaseBuildOut}/${zipOutName}">
<!-- zip up the BB jar and drop it for distribution -->
<zipfileset dir="${releaseBuildOut}" includes="**/*.jar" />
</zip>
<move todir="${releaseBuildOut}/UNUSED_BUILD_OUTPUT_FILES/"><!-- move unwanted files, leaving the zip behind -->
<fileset dir="${releaseBuildOut}">
<include name="**/*.*"/>
<exclude name="**/*.zip"/>
</fileset>
</move>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
我已经使用你的步骤 A 和 B 创建了一个“库” - 谢谢。Blackberry 的最新 Eclipse 插件 (1.3.0.201102031007-19) 有一个“Blackberry | Package Project”命令。我用它来创建 jar 文件(它把它放在项目的“可交付成果”文件夹中)。
然后我按照您的建议更改了清单以删除 MIDP 行(这显然是一个已知的错误)。最后,我按照步骤将库添加并部署到我的项目中。(顺便说一句,这些与添加横幅/广告库的步骤相同 - 非常简单。)
我也有一个使用 bb-ant-tools 的独立/外部构建脚本进程。我最近添加了“外部库 jar”功能来适应这一点。但是使用 Eclipse 中的新功能让我怀疑是否需要维护命令行构建脚本,因为 GUI 现在可以为我做这件事。
对我来说,关键是按照您的指示将我的图书馆项目的构建切换到“Blackberry 应用程序”(例如 CDLC 应用程序)。将其设置为“库”后,我收到了“剔除”错误。
谢谢你的帖子。
| 归档时间: |
|
| 查看次数: |
4010 次 |
| 最近记录: |