如何更改软件包名称,通过命令提示符编译和签署黑莓java应用程序?

时间:2014-07-04 16:12:28

标签: java eclipse blackberry

2天前我问过building android apps from cli,有人建议Gradle建造它并且它有效。

现在我在Blackberry尝试做同样的事情,BlackBerry中是否有Gradle工具?我可以构建,更改包名称并使用预定义的构建签署文件,而无需使用常见的Java gui进行签名等...

我尝试使用不同的资源文件编译相同的java文件,每次都可以通过它们自定义应用程序。

我试过:

  • 使用eclipse的代码为黑莓编译了一个应用程序 在rpc的控制台上显示,这有效,但我无法在构建之前更改包名称。
  • 尝试使用以下方式签署应用程序:
  

Java -jar SignatureTool.jar [[-a [-p password]] [-c] [-C] [-s] [-f   [-d] inputFile] [ - r目录] [ - 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。

EDIT(为第三方库添加了输出和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

1 个答案:

答案 0 :(得分:1)

考虑BlackBerry Ant Tools

有四项蚂蚁任务:

rapc - 运行编译器

sigtool - 签署代码

alx - 创建cod文件和.alx文件的目录结构。 Alx文件用于通过usb-cable安装黑莓应用程序。所谓的"standard install"

jadtool - 获取一个输入.jad文件,并用一个或多个新的cod文件重写它。 Jad文件用于无线安装。所谓的"OTA install"

<强>更新

假设我们有以下jar库,需要将它们包含在我们的项目中:

  • lib1.jar
  • lib2.jar
  • lib3.jar

编译后,所有这些jar文件将被编译为cod文件。你会得到:

  • lib1.cod
  • lib2.cod
  • lib3.cod

如果您的应用程序文件名是myapp.cod,那么您需要签名并安装以下文件:

  • lib1.cod
  • lib2.cod
  • lib3.cod
  • myapp.cod

重要的是,myapp.cod不会包含那些jar文件,myapp.cod只会引用相应的cod文件(模块)。您需要在设备上签名并安装所有这些鳕鱼文件。

请注意,您无需签名并安装net_rim_api.jar

它是一个系统库,不应安装到设备上,因为设备操作系统已经支持它。