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

标签 java eclipse blackberry

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

最佳答案

考虑BlackBerry Ant Tools

有四个 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/

相关文章:

java - 文件菜单上显示不可点击的文本

java - Maven 与 AspectJ - 例子?

javascript - 在 BlackBerry WebWorks 应用程序中显示 Google map

java - 如何在 OO Java 中建立两个对象之间的双向关联

java - 通用递归类?

Java 8 Streams - 分层排序嵌套列表

java - 每个 spring 源代码 ide 的 springframework.org/tags 表单的 Maven 引用?

android - 如何在装有 Android 的 htc 手机上禁用音频输出处理

java - 是否可以通过黑莓 API 发送 BBM 消息?

Blackberry - 具有不同 ID 的可点击 ListView