Tôi có một dự án Android phụ thuộc vào ba thư viện Android. Đó là project.properties tập tin trông giống như sau:
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 của dự án này được sử dụng chỉ để phụ thuộc vào nhiệm vụ Gradle:
<target name="-pre-build" depends="preBuild" />
<target name="-pre-compile" depends="preCompile" />
<import file="${sdk.dir}/tools/ant/build.xml" />
và build.gradle bao gồm build.xml của dự án theo cách sau:
ant.property(file: 'local.properties')
configurations {
sdkDir = ant.properties['sdk.dir']
}
ant.importBuild "build.xml"
Khi tôi chạy tập lệnh này với mục tiêu "phát hành", tôi nhận được lỗi sau từ A tập tin ndroid của build.xml:
[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".
mà là do dòng 466 (một trong những có chứa "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>
Vì vậy, câu hỏi là: Có ai biết làm thế nào để thoát khỏi của lỗi đó hoặc cách sử dụng đúng build.xml của Android trong Gradle?
Gradle-android-plugin bị hỏng tại thời điểm này cho android sdk> = r14 và do đó tôi đã từ chức tùy thuộc vào nó. Tôi sử dụng công cụ sdk r15.
UPDATE:
Dường như không
<target name="-set-release-mode" depends="-set-mode-check">
cũng không
<target name="-set-debug-mode">
đang được gọi là trong file build.xml của Android, nhưng tôi không biết tại sao.
Cảm ơn bạn đã trả lời. Không may, không phải trường hợp này. Mục tiêu trong project.properties là phiên bản api bạn đang nhắm mục tiêu, nhưng build.target là một mục tiêu ant mà bạn đang chạy cho dự án chính, ví dụ. "giải phóng". Vì vậy, nó làm việc khi tôi đặt nó là "build.target = release", nhưng nó sẽ được thực hiện tự động, nếu tôi hiểu nó tốt. – Orzech