1

我搜索了谷歌和 SO 的解决方案,但找不到任何解决方案。我正在为 android 开发一个移动 AIR 应用程序,我使用 Jenkins 作为本地 CI 系统。我的项目编译得很好,但是,在 ADT 打包过程中出现了问题。我从以下示例中复制了 ADT 打包目标:

http://blog.terrenceryan.com/using-ant-to-package-the-same-air-app-to-multiple-devices/

https://gist.github.com/630170

但是,我在 Jenkins 中得到了这个输出:http: //d.pr/i/y2gJ

这是我的 build.xml 文件中的打包部分(使用了重要的属性名称和值):

...
...
<property name="APP_NAME"                   value="Hightide"/>
<property name="ANDROID_HOME"               value="${user.home}/../../../Supermaggel/SDKS/android-sdk-macosx" />
<property name="APP_DESCRIPTOR"             value="${SOURCE_DIR}/${APP_NAME}-app.xml" />
<property name="SWF_FILE"                   value="${APP_NAME}.swf" /> 
<property name="OUTPUT_LOCATION_ANDROID"    location="${BUILD_DIR}/android" />
<property name="OUTPUT_SWF_ANDROID"         location="${OUTPUT_LOCATION_ANDROID}/${SWF_FILE}" />
<property name="OUTPUT_APK_ANDROID"         value="OUTPUT_LOCATION_ANDROID/${APP_NAME}.apk" />
...     
...
<!-- PACKAGE ANDROID -->
<target name="package-android">
    <echo message="Packaging for Android"/>
    <exec executable="${ADT}" dir="${OUTPUT_LOCATION_ANDROID}">
        <arg line="-package"/>
        <arg line="-target apk"/>
        <arg line="-storetype pkcs12"/>
        <arg line="-keystore ${KEYSTORE_ANDROID}" />
        <arg line="-storepass ${STOREPASS_ANDROID}" />
        <arg line="${APP_NAME}"/>                   <!-- output .APK -->
        <arg line="${APP_DESCRIPTOR}"/>         <!-- app descriptor location -->
        <arg line="${OUTPUT_SWF_ANDROID}"/>         <!-- output -->
    </exec>
</target>

我正在使用 Jenkins 版本。1.486、Flash 生成器 4.6、AIR 3.3。

谁能指出包装过程中出了什么问题?任何参数丢失或解释错误?

4

1 回答 1

0

我发现是什么原因造成的。ADT cli 工具给出了退出代码 2,这意味着参数有问题……我花了几个小时查看它,试图找出问题所在。对于 ADT,您需要传入相对路径,而不是“绝对”路径(或者,来自项目根目录的相对路径。)所以不要使用 ${PROJECT_ROOT}/packagedir/${APPNAME}.apk,只需使用 packagedir/${APPNAME}。 apk 或类似的东西,适用于所有路径。

于 2012-10-25T21:21:54.440 回答