2天前我问过building android apps from cli ,有人推荐 Gradle 来构建它并且它有效。
现在我试图在黑莓中做同样的事情,有没有像 Gradle 这样的工具在黑莓手机中?我可以使用预定义的构建来构建、更改包名称并签署文件,而无需使用常见的 java gui 进行签名等...
每次制作应用程序时,我都尝试使用不同的资源文件编译相同的 java 文件。
我尝试过:
- 使用 eclipse 的代码编译了一个黑莓应用程序 使用 rpc 在控制台上显示,这有效,但我无法在构建之前更改包名称。
- 尝试使用以下方式签署应用程序:
Java -jar SignatureTool.jar [ [-a [-p password] ] [-c] [-C] [-s] [-f [-d] inputFile ][-r directory ][-help] codFile codfile... | csiFile
但不幸的是,这对我不起作用,而且我真的不想使用 Java UI 来签名应用程序,我想完成从命令行执行它的所有操作,这样我就可以制作一个稍后为我执行此操作的脚本。
有没有办法使用 Ant 或 Maven 来做到这一点?
感谢您的阅读!
编辑(添加代码)
我正在使用 bb-ant-tools ,我使用了不同的方法来导入第三方 jar 文件,但没有成功。而且签名也不起作用。
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="smspremiumtemplateBB" default="build">
<property name="jde.home" location="C:\Users\Amir\Desktop\eclipse\plugins\net.rim.ejde.componentpack5.0.0_5.0.0.36\components"/>
<property name="bb-ant-tools.home" location="C:\Users\Amir\Desktop/eclipse/plugins/org.apache.ant_1.8.4.v201303080030\lib" />
<taskdef resource="bb-ant-defs.xml" classpath="${bb-ant-tools.home}/bb-ant-tools.jar" />
<property file="common.properties" />
<property prefix="project" file="project.properties" />
<property name="dest.dir" location="build" />
<path id="import.jars">
<fileset dir="../MySDK/build" includes="*.jar" />
<fileset dir="../regex/build" includes="*.jar" />
</path>
<path id="src.files">
<fileset dir="src" includes="**/*" />
<fileset dir="res" includes="**/*" />
</path>
<target name="build" depends="">
<mkdir dir="${dest.dir}" />
<copy file="${basedir}/res/img/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" />
<import location="C:/Users/Amir/Desktop/eclipse/plugins/net.rim.ejde.componentpack5.0.0_5.0.0.36/components/bin/output/regex2.jar" />
<import>
<fileset dir="C:/Users/Amir/Desktop/eclipse/plugins/net.rim.ejde.componentpack5.0.0_5.0.0.36/components/bin/output/" includes="*.jar" />
</import>
</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>
common.properties 文件
jde.home=C:/Users/Amir/Desktop/eclipse/plugins/net.rim.ejde.componentpack5.0.0_5.0.0.36/
sigtool.jde = C:/Users/Amir/Desktop/eclipse/plugins/net.rim.ejde.componentpack5.0.0_5.0.0.36/components
sigtool.password = ********
project.properties 文件
output=MySDK
type=midlet
output=regex
type=midlet
output=MyApp
title=App
type=cldc
vendor=Richard
version=1.0.7
description=A nice app
icon=img/icon.png
编辑(解决了签名问题)
签名现在可以正常工作,只包括剩下的 .jar 文件。我的问题是我的 SignatureTool.jar 来自 rimBB_5.0,我刚刚将其更改为 7.1。
编辑(为第 3 方库添加输出和 rapc 任务)
<rapc
jdehome="${jde.home}"
output="${project.output}_library"
destdir="${dest.dir}"
>
<src>
<fileset dir="./lib/" includes="*.jar"/>
</src>
<jdp type= "midlet" title="${app.name}_library" vendor="my vendor" version="@{buildversion}" runonstartup="true" startuptier="6"/>
</rapc>
输出
C:\Users\Amir\Desktop\cliTest\antBB>ant build
Buildfile: C:\Users\Amir\Desktop\cliTest\antBB\build.xml
build:
[rapc] Compiling 30 source files to MyApp.cod
[rapc] C:\Users\Amir\Desktop\cliTest\antBB\src\mypackage\ValidationManager.
java:20: error: package me.regexp does not exist
[rapc] import me.regexp.RE;
[rapc] ^
[rapc] C:\Users\Amir\Desktop\cliTest\antBB\src\mypackage\ValidationManager.
java:39: error: cannot find symbol
[rapc] RE regular_expresion = new RE("^"+pattern+"$");
[rapc] ^
[rapc] symbol: class RE
[rapc] location: class ValidationManager
[rapc] C:\Users\Amir\Desktop\cliTest\antBB\src\mypackage\ValidationManager.
java:39: error: cannot find symbol
[rapc] RE regular_expresion = new RE("^"+pattern+"$");
[rapc] ^
[rapc] symbol: class RE
[rapc] location: class ValidationManager
[rapc] 3 errors
[rapc] Error!: Error: java compiler failed: javac -source 1.3 -target 1.3 -
g -O -d C:\Users\Amir\AppData\Local\Temp\rapc_63ff2f31.dir -bootclas ...
BUILD FAILED
C:\Users\Amir\Desktop\cliTest\antBB\build.xml:35: Java returned: 97
Total time: 2 seconds
最佳答案
有四个 ant 任务:
rapc
- 运行编译器
sigtool
- 签署代码
alx
- 创建 cod 文件和 .alx 文件的目录结构。 Alx 文件用于通过 USB 电缆安装黑莓应用程序。所谓"standard install"
jadtool
- 获取输入 .jad 文件并用一个或多个新的 cod 文件重写它。 Jad 文件用于无线安装。所谓"OTA install" .
更新
假设我们有以下 jar 库,需要将它们包含到我们的项目中:
- lib1.jar
- lib2.jar
- lib3.jar
编译后,所有这些 jar 文件将被编译为 cod 文件。你会得到:
- lib1.cod
- lib2.cod
- lib3.cod
如果您的应用程序 cod 文件名为 myapp.cod
,那么您将需要签名并安装以下文件:
- lib1.cod
- lib2.cod
- lib3.cod
- myapp.cod
重要的是,myapp.cod
不会包含那些jar文件,myapp.cod
只会引用相应的cod文件(模块)。您需要签署所有这些 cod 文件并将其安装到设备上。
请注意,您不需要签名并安装net_rim_api.jar
它是一个系统库,不应安装到设备上,因为设备操作系统已支持它。
关于java - 如何通过命令提示符更改包名称、编译和签名黑莓java应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24578034/