Blackberry Apps - Импорт jar-файла с кодовой подписью в проект приложения.

Я работаю над проектом библиотеки, который разработчики Blackberry Java могут импортировать в свои проекты. Он использует защищенные API-интерфейсы RIM, которые требуют подписи кода, что я и сделал. Но я не могу импортировать свой Jar и работать с простым приложением helloWorld. Я использую подключаемый модуль eclipse Blackberry-JDE.

РЕДАКТИРОВАТЬ: Решение найдено ....

так как я нашел решение, я удалил то, что пробовал, оставив только решение ...

СОЗДАНИЕ SDK / библиотеки (используйте BB-ANT-TOOLS в eclipse или автономно)
шаги:

A) Мне пришлось создать jar-файл моего SDK как приложение cldc, а не как проект библиотеки, используя BB-ANT-TOOLS. Это решило большинство проблем, которые у меня были выше.

B) Затем я добавил задачу ANT, чтобы взять полученный JAR из шага A и сделать следующее:

  • разархивируйте это,
  • отредактируйте файл манифеста, чтобы удалить строку «MicroEdition-Profile: MIDP-2.0». Эта строка вызывает ошибку при попытке пометить банку для экспорта.
  • затем снова застегнул молнию на банке.

ПРИМЕЧАНИЕ. Я написал урезанный скрипт для муравьев BB-ANT-TOOLS, чтобы показать, как вы можете использовать его для выполнения этих двух шагов, описанных выше. Сценарий приведен ниже.

Использование jar-пакета SDK в качестве конечного пользователя или в своем собственном проекте.
Затем, чтобы интегрировать jar-файл в bb-eclipse, выполните следующие действия:

A) Добавьте банку в BuildPath

B) в разделе «Путь сборки Java» на вкладке «Порядок и экспорт» выберите банку для экспорта. Это заставляет rapc встраивать банку в файл 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>

person eSniff    schedule 07.05.2010    source источник
comment
Я просто копался в своих журналах сборки проекта 1.1.1 и обнаружил эту ошибку: c: \ ... \ Blackberry-Test-Lib.jar (Blackberry-Test-Lib.cod): Предупреждение !: Импортировать файл помечено как не подлежащее синтаксическому анализу. Я собираюсь исследовать, что это значит ...   -  person eSniff    schedule 08.05.2010
comment
Я наконец-то заставил его работать, используя BB-ANT-Tools для eclipse и используя метод двух проектов для Blackberry JDE. К сожалению, мне не удалось найти чистое решение Eclipse ... Вот хорошая ссылка на bb-ant-tools slashdev.ca/2007/05/30/blackberry-development-with-ant-eclipse   -  person eSniff    schedule 15.05.2010


Ответы (1)


Я использовал ваши шаги A и B для создания «библиотеки» - спасибо. Последний плагин Eclipse для Blackberry (1.3.0.201102031007-19) имеет команду «Blackberry | Package Project». Я использовал это, чтобы создать файл jar (он поместил его в папку «конечные результаты» в проекте).

Затем я изменил манифест, поскольку вы предлагаете удалить строку MIDP (что, по-видимому, является известной ошибкой). Наконец, я выполнил шаги, чтобы добавить и развернуть библиотеку в свой проект. (Это, кстати, те же шаги, что и при добавлении библиотеки баннеров / рекламы - очень просто.)

У меня тоже есть автономный / внешний процесс сборки скрипта, который использует bb-ant-tools. Недавно я добавил функцию «банка внешней библиотеки», чтобы учесть это. Но использование новой функции в Eclipse заставляет меня задаться вопросом, нужно ли мне поддерживать мои сценарии сборки из командной строки, поскольку теперь графический интерфейс делает это за меня.

Ключевым моментом для меня было переключить сборку проекта моей библиотеки на «Приложение Blackberry» (например, приложение CDLC) в соответствии с вашими инструкциями. Когда он был установлен как «Библиотека», я получал ту «выпотрошенную» ошибку.

Спасибо за ваш пост.

person Jon    schedule 27.09.2011
comment
FWIW в моих попытках с использованием приложения BlackBerry НЕ работал. Пришлось установить MIDLET. (согласно моему ответу здесь stackoverflow.com/a/9978353/383414) - person Richard Le Mesurier; 13.04.2012