2011-12-06 23 views
7

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.

Trả lời

1

Tôi không biết gì về các chi tiết cụ thể của môi trường này, nhưng thông báo lỗi có nghĩa là thuộc tính mong đợi - build.target - không được xác định.

Tôi nhận thấy rằng trong bất động sản dự án của bạn tập tin bạn có điều này:

# Project target. 
target=android-5 

Liệu nó có tác dụng nếu bạn thay đổi nó với điều này?

# Project target. 
build.target=android-5 
+1

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

0

tôi đã cùng một vấn đề và giải quyết bao gồm:

build.target = phát hành

vào cuối project.properties, theo đề nghị của Orzech.

0

Tôi biết rằng đây là một bài đăng cũ tuy nhiên câu hỏi mà tôi vẫn nảy sinh đối với ai đó. Build.target (s) là bất kỳ mục tiêu nào được xác định cho trình tạo Ant. Nếu bạn đang sử dụng Eclipse, bạn có thể xác định các chỉ tiêu như sau:

Menu-> Run-> External Tools-> Tools Configuration> Mục tiêu

Ở đó bạn chọn các chỉ tiêu thực tế được xây dựng bởi Ant .

Lưu ý rằng nếu không có định nghĩa nào được xác định, Eclipse sẽ bắt buộc mục tiêu Trợ giúp.

Tìm hiểu thêm tại đây: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Fconcepts%2Fconcepts-exttools.htm

Các vấn đề liên quan