我无法为我们的生产应用程序创建Ant构建脚本.
我一直在阅读很多关于Ant和bb-ant-tools的文章.我已经关注了很多关于Ant和BB的stackoverflow问题(在评论中引用以"链接"问题).我想帮助一个比通常的"Hello World!"更复杂的脚本.风格的应用.我当前的构建过程完全在Eclipse中运行,并手动完成.
对于这个问题,我想问一下如何使用Ant来构建一个使用2个(或更多个)不同库项目(也需要构建)的项目,而根本不使用Eclipse?
我安装了Ant,bb-ant-tools.我已经在设备上构建并部署了一个基本的Hello World,使用这些工具遵循基本示例.我创建了一个构建脚本和一些属性文件; 但是当我运行脚本时,最终产品不能在手机上运行(手机用户界面在启动屏幕上冻结).
我有3个构建脚本,每个库一个,主应用程序一个.这些是相同的,除了项目名称(并且可以在某个时候组合成一个通用的导入脚本).3个java项目中的每一个都有一个与之相关的Ant属性文件.我还使用3个常用属性文件来定义常量,在JDE上存储信息和代码签名密码.
common.properties:
jde.home=C:/development/tools/bb-jde/jde4.5/components
sigtool.jde = ${jde.home}
sigtool.password = xxx_pass_xxx
Run Code Online (Sandbox Code Playgroud)project.properties(用于SOAP库):
output=MySOAP
type=midlet
Run Code Online (Sandbox Code Playgroud)project.properties(用于内部SDK库):
output=MySDK
type=midlet
Run Code Online (Sandbox Code Playgroud)更新1:我已经更新了自初始发布以来的库属性文件.以前我设置type=library(基于RIM文档).根据我在这篇文章中概述的研究(BlackBerry - 在自己的项目中使用自己的JAR文件),我尝试改为type=midlet.这样可以获得更好的结果(至少在我的平台BB JDE 5.0上).
project.properties(对于我的应用):
output=MyApp
title=App
type=cldc
vendor=Richard
version=1.0.7
description=A nice app
icon=icon.png
Run Code Online (Sandbox Code Playgroud)build.xml(除了顶部的名称外,所有相同的,并且2个库脚本没有在import.jars中声明的文件集):
<?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 …Run Code Online (Sandbox Code Playgroud)这是后续行动:BlackBerry - 在自己的项目中使用自己的JAR文件和BlackBerry - 用于更复杂应用程序的Ant构建脚本.现在已经在下面解决了这个问题.
我想要:
重要的是使用Ant来完成构建的最后阶段.
我找到的针对此问题的所有帖子都使用Eclipse进行最终构建阶段(BlackBerry的详细信息- 在自己的项目中使用自己的JAR文件).
我可以用Ant构建最终项目.但生成的COD文件不包含我的库中的任何运行时代码.
我读过的很多帖子都展示了如何使用库的额外COD文件来完成这项工作.我想避免这个.
如何使用Ant将JAR包含到没有外部依赖项的项目中?我相信这是可能的,因为我可以使用Eclipse来做到这一点.
我目前的解决方法是将我的SDK /库项目作为源代码(根据esaj的答案)包含在内,而不是作为JAR文件.这比JAR方法有一些缺点,但我有一个成功运行在设备上的构建.
(我希望可以将这个问题与以下长链接列表交叉引用?)
StackOverflow链接:
这个给出了其他链接 - 非常有用:
这些不太有用:
我想在我的BlackBerry项目中添加一个jar文件.我尝试通过以下方式添加jar文件 - >
但在那之后,每当我尝试运行应用程序时,我都会收到"模块abc.jar未找到错误".
如何将jar文件添加到BlackBerry项目?
我正在开发一个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 …Run Code Online (Sandbox Code Playgroud) 在我看来,我想要实现的目标非常简单,但却变得令人难以置信的痛苦.
我有ProjectA,它是一个BlackBerry Application项目.我有ProjectB,这是一个Java库项目.我想从ProjectA引用ProjectB.我可以添加一个引用,但是当我运行ProjectA时,它不起作用.我有两个项目的源代码,都使用Java编译器1.4编译
我尝试了很多东西,但由于某种原因一切都失败了:
1. ProjectB上的pre-verify.exe 失败并显示错误"JAR文件创建失败,错误为-1"我可以看到已经创建了cod和jar文件,但是当将jar文件添加到ProjectA并运行它时,它没有不行.不确定我是否需要添加.cod文件.
2.创建新的BlackBerry Library Project并在ProjectA中引用它 我创建一个新项目ProjectC,然后将jar的jar添加到它.然后我在ProjectA中添加对ProjectC的引用.但是我无法从ProjectB导入类
请提出一条出路.我正在使用Eclipse插件并依赖Eclipse的构建功能
我在Eclipse的Blackberry Java Plug-in中创建了两个Blackberry项目,即MyProjectApp(设置为应用程序项目)和MyProjectLib(设置为Library项目).现在我创建了一个简单的MainScreen类,如下所示:
public class SampleScreen extends MainScreen {
public SampleScreen (){
RichTextField topbar = new RichTextField("hello world");
add(topbar);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我将MyProjectLib导出为Jar文件,并在MyProjectApp中添加相同的外部Jar.现在我要使用以下方法触发SampleScreen:
public class MyProjectMain extends UiApplication{
public static void main(String[] args) {
MyProjectMain theApp = new MyProjectMain();
theApp.enterEventDispatcher();
}
public LangHostMain(){
// Push a screen onto the UI stack for rendering.
pushScreen(new SampleScreen());
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误:
模块"MyProjectApp"存在验证错误.启动MyProjectApp时出错:模块"MyProjectApp"出现验证错误.
但是,如果我将SampleScreen类移动到MyProjectApp,它工作正常.导出Jar并使用它有什么问题?需要什么类型的验证?