Blackberry Apps - импорт подписанного кода фляги в проект приложения

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

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

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

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

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

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

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

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

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

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

B) в разделе "Путь сборки Java" на вкладке "Заказ и экспорт" выберите банку для экспорта. Это заставляет rapc встроить банку в файл COD, так что в конце у вас будет только одна COD.

теперь, когда пользователь создает этот проект, jar интегрируется в окончательный файл cod, и его очень легко доставить на телефон или сим.

<?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>

1 ответ

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

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

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

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

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

Другие вопросы по тегам