Цель "$ {build.target}" не существует в проекте "LibA" при запуске Android build.xml из Gradle - PullRequest
7 голосов
/ 06 декабря 2011

У меня есть проект Android, который зависит от трех библиотек Android. Это файл project.properties выглядит следующим образом:

split.density=false
android.library.reference.2=..\\LibB
proguard.config=proguard.cfg
android.library.reference.1=..\\\\LibA\\\\
# Project target.
target=android-5
android.library.reference.3=../LibC


build.xml этого проекта используется только для зависимости от задач Gradle:

<target name="-pre-build" depends="preBuild" />
<target name="-pre-compile" depends="preCompile" />

<import file="${sdk.dir}/tools/ant/build.xml" />


, и build.gradle включает build.xml проекта следующим образом:

ant.property(file: 'local.properties')

configurations {
    sdkDir = ant.properties['sdk.dir']
}

ant.importBuild "build.xml"


Когда я запускаю этот сценарий с целью "release", я получаю следующую ошибку из файла build.xml Android:

[ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':-build-setup'.
[ERROR] [org.gradle.BuildExceptionReporter] Cause: The following error occurred while executing this line:
[ERROR] [org.gradle.BuildExceptionReporter] Target "${build.target}" does not exist in the project "LibA".


, что вызвано строкой 466 (той, которая содержит "subant"):

<!-- compile the libraries if any -->
<if>
    <condition>
        <isreference refid="project.libraries" />
    </condition>
    <then>
        <echo>Building Libraries</echo>
        <subant
                buildpathref="project.libraries"
                antfile="build.xml"
                target="${build.target}"
                failonerror="true"/>
        <echo></echo>
        <echo>############################################</echo>
        <echo>**** Back to project ${ant.project.name} ****</echo>
        <echo>############################################</echo>
    </then>
</if>


Итак, вопрос: кто-нибудь знает, как избавиться от этой ошибки или как правильно использовать build.xml Android в Gradle?

Gradle-android-plugin на данный момент не работает для android sdk> = r14, и поэтому я отказался от зависимости от него. Я использую SDK инструменты R15.

UPDATE:

Кажется, что ни

<target name="-set-release-mode" depends="-set-mode-check">

ни

<target name="-set-debug-mode">

вызывается в файле Android build.xml, но я не знаю почему.

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

Я ничего не знаю о специфике этой среды, но сообщение об ошибке означает, что ожидаемое свойство - build.target - не определено.

Я заметил, что в вашем файле свойств проекта естьthis:

# Project target.
target=android-5

Работает ли оно, если изменить его на это?

# Project target.
build.target=android-5
0 голосов
/ 10 мая 2014

Я знаю, что это старый пост, однако вопрос еще может возникнуть у кого-то. Build.target (s) - это любая цель, определенная для строителя Ant. Если вы используете Eclipse, вы можете определить цели следующим образом:

Меню-> Выполнить-> Внешние инструменты-> Настройка внешних инструментов-> Цели

Там вы выбираете фактические цели, которые будут построены Ant.

Обратите внимание, что если ничего не определено, Eclipse принудительно заставит цель Help.

Больше можно найти здесь: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Fconcepts%2Fconcepts-exttools.htm

0 голосов
/ 07 мая 2013

У меня была такая же проблема, и она была решена в том числе:

build.target = релиз

в конце project.properties, как предложено Orzech.

...