我将我的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/