当前位置: 首页 > 面试题库 >

导致此错误的原因是:“ air / android / device / Runtime.apk的SDK组件已过期”

居英资
2023-03-14
问题内容

我目前正在为iOS和Android开发Adobe AIR项目。
我们使用运行ANT构建脚本的Jenkins自动构建事物。它基于不同的编译器(发行版和测试版)打包了不同版本的应用程序,并且测试版中打包了更多不同的配置。

到目前为止,一切都很好。该构建可在运行ANT 1.8.4并结合AIR 3.6 SDK的本地计算机上使用。

问题是, 有时 (或 大部分时间 )在Jenkins机器(Mac Mini)上,构建失败并显示错误消息,如下所示:

package-android-versions:
   [delete] Deleting directory /private/var/jenkins/workspace/**********/dist/android/release
    [mkdir] Created dir: /private/var/jenkins/workspace/*************/dist/android/release
     [echo] packaging for android...
     [echo] done
   [delete] Deleting directory /private/var/jenkins/workspace/************/dist/android/test/dummy
    [mkdir] Created dir: /private/var/jenkins/workspace/**************/dist/android/test/dummy
     [echo] packaging for android...
     [java] SDK component at air/android/device/Runtime.apk is out of date

您可能会注意到,第一个package命令成功执行,因此,实际上并不是我的SDK组件已经过时。那么第一个package命令也将失败。

以下是相关的ANT构建命令:

        <echo>packaging for android...</echo>
        <java jar="${AIR_SDK_HOME}/lib/adt.jar" fork="true" failonerror="true">
            <jvmarg line="-Xmx1024m" />
            <jvmarg line="-XX:MaxPermSize=2048m" />
            <arg line="-package"/>
            <arg line="-target apk-captive-runtime"/>
            <arg line="-storetype pkcs12 -keystore '${dir.portal}/self-signed.p12' -storepass ******"/>
            <arg line="'@{destination}/${app.name}@{label}' '@{source}/${app.descriptor}'" />
            <arg line="-C '@{source}' ."/>
            <arg line="-C '${dir.assets.runtime.android}' ."/>
        </java>
        <echo>done</echo>

我试图增加可用于java命令的内存量(因为很多时候这是我的经验失败的原因),但这不是这里的解决方案。

另外,我已经看了这个类似问题)的答案,但是我们的构建机器在编译和打包之间并没有得到帮助,所以这不是真正的答案;)

还有其他想法吗?


问题答案:

我做了一些调查:adt.jar正在启动一个单独的过程,以使用lib / android / bin /
aapt从Runtime.apk获取Android版本信息。看来,调用此单独的进程和/或读取其输出可能是此处的罪魁祸首。

没有实际获得可编译版本的adt.jar的源并添加额外的调试信息,我不能确定这是问题所在,但看起来很像。错误触发可以是机器上影响线程或文件读取的任何东西,这基本上是任何系统活动。

AIR SDK 3.8中的adt.jar对启动外部进程的区域进行了微小的更改,以确保完全读取aapt命令的输出。

升级到3.8可能会解决此问题,并且如果不修改adt.jar,则无法修复3.6版本。

PS:哈弗兰克!:-)



 类似资料:
  • 问题内容: 我写了一个控制台应用程序就跑,然后。这很好。 然后,我创建了一个包,并将helloworld.java移入其中(包导入语句正确生成为)。然后我运行了它,效果也很好,并正确生成了类。 但是,当我从控制台运行时,它引发了“找不到类”错误。 请谁能告诉我这是什么问题? 问题答案: 尝试跑步 其中ABSOLUTE_PATH指向类文件以及程序包所在的目录。说它是生成类文件的目录,以及与源文件相同

  • 这是因为在我的系统路径中没有对grunt的引用吗?还是别的什么?我已经试着重新安装了几次。

  • minecraft 1.8.8的modcoderpack918中的有一个很大的问题。我的Java版本是1.8.0_271-B09。 我不知道我必须做什么。

  • google cloud SDK无法下载,导致此错误。 “find”不能识别为内部或外部命令、可操作程序或批处理文件。

  • 我正试图在我的离子应用程序中实现推送通知。为此,我想使用原生插件推: https://ionicframework.com/docs/native/push/ 在安装这个插件之前,我可以在我的Android设备上使用以下命令启动我的应用程序: 到build.gradle文件,它修复了第一个提到的错误,但给了我另一个错误(推插件): 我还尝试添加了这个: 添加到project.properties文

  • 我想在不使用IDE的情况下执行我的程序。我已经创建了一个jar文件和一个可执行的jar文件。当我双击exe jar文件时,什么也没有发生,当我尝试在cmd中使用命令时,它给出以下信息: 我使用命令:java-jar Calculator.jar 我是如何创建jar的: 右键单击项目文件夹(计算器) 选择 单击Java文件夹并选择可执行罐文件,然后选择下一个 启动配置:主-计算器 创建出口目的地 命