NullPointerException в com.android.ant.ApkBuilderTask.execute при сборке с помощью ant - PullRequest
1 голос
/ 26 сентября 2010

Я настроил свой проект Android для использования муравья.При построении с использованием ключевого слова 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)

Не удается выполнить в строке build9xml 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" приводит к одинаковому результату.

Ответы [ 3 ]

1 голос
/ 27 сентября 2010

Это изменение, внесенное в инструменты r7. Вам необходимо обновить задачу <apkbuilder> в вашем build.xml способами, указанными выше сатурнином.

Учитывая, что эта ошибка возникает только при настройке вашего build.xml, я думаю, что вам нужно вернуться и повторить настройки. Если вы ищете $ANDROID_SDK/tools/ant/ant_rules_r3.xml и вставляете их в build.xml (заменяя определения, которые вы вставили в прошлый раз), это должно решить ваши проблемы.

Возможно, вам удастся обойтись без настроек, поскольку новая версия правил гораздо более настраиваема и включает в себя -pre-compile и -post-compile хуки.

0 голосов
/ 26 ноября 2010

Другая причина этого с SDK r8 состоит в том, что в вашем вызове apkbuilder отсутствует

resourcefile="${resource.package.file.name}" 

атрибут.
Если ваша ошибка в com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:257), добавьте это к вашему вызову задачи apkbuilder.

0 голосов
/ 27 сентября 2010

Вот исходный код для задачи муравья:
https://android.googlesource.com/platform/sdk/+/tools_r7/anttasks/src/com/android/ant

Похоже, переменная mDexPath равна нулю, и я не вижу <dex> элемента внутри <apkbuilder>. Вы видели это предупреждение где-нибудь: "WARNING: Using deprecated <file> inner element in ApkBuilderTask."?

Вы создали свой собственный ant-скрипт или используете проект, созданный инструментом Android? Вы можете скопировать ваш исходный код, ресурсы, AndroidManifest.xml и другие библиотеки / ресурсы в недавно созданный проект Android, чтобы исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...