我将我的android项目配置为使用ant。使用关键字release构建时,它失败并显示以下消息:

java.lang.NullPointerException
at com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:239)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)


它在build.xml第249行中失败,该行包含在此处:

<macrodef name="package-helper">
    <attribute name="sign.package" />
    <element name="extra-jars" optional="yes" />
    <sequential>
        <apkbuilder
             outfolder="${out.absolute.dir}"
             basename="${ant.project.name}"
             signed="@{sign.package}"
             debug="${manifest.debuggable}"
             verbose="${verbose}">  **LINE 249 IS HERE**
           <file path="${intermediate.dex.file}" />
           <sourcefolder path="${source.absolute.dir}" />
           <sourcefolder refid="android.libraries.src" />
           <jarfolder path="${external.libs.absolute.dir}" />
           <jarfolder refid="android.libraries.libs" />
           <nativefolder path="${native.libs.absolute.dir}" />
           <nativefolder refid="android.libraries.libs" />
           <extra-jars/>
        </apkbuilder>
    </sequential>
</macrodef>


从包含这些行的第401行调用:

<target name="-package-release" depends="-dex, -package-resources">
    <package-helper sign.package="false" />
</target>


似乎ApkBuilderTask.java有问题,但我不知道如何/在何处获取ApkBuilderTask.java的源代码。有谁遇到这个问题并找到解决方案?如果有帮助,我正在使用android SDK工具版本7。

注意:运行“ ant debug”或“ ant release”都会得到相同的结果。

最佳答案

这是r7工具中引入的更改。您需要按照saturnine上面指出的方式更新<apkbuilder>中的build.xml任务。

鉴于此错误仅在您自定义build.xml时发生,我认为您需要返回并重做自定义。如果您查找$ANDROID_SDK/tools/ant/ant_rules_r3.xml并将其粘贴到build.xml中(替换上次粘贴的定义),则应该可以解决您的问题。

您可以不进行自定义就摆脱困境,因为新版规则更可自定义,并包含-pre-compile-post-compile挂钩。

关于android - 使用ant构建时com.android.ant.ApkBuilderTask.execute中的NullPointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3799368/

10-11 22:42
查看更多