У меня есть проект 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, но я не знаю почему.