2010-03-17 22 views
18

Tôi có một dự án hiện có xây dựng tốt bằng cách sử dụng IDE của tôi. Tôi muốn sử dụng lệnh "android update" để tạo tệp xây dựng kiến ​​cho dự án này.Làm thế nào để xây dựng một ứng dụng Android với các thư viện bên ngoài bằng cách sử dụng kiến?

Tệp buildfile được tạo tiền phạt, nhưng bản dựng không thành công vì nó không xây dựng với một số jarfiles mà tôi có trong thư mục libs của mình.

Tôi muốn tìm ra cách thích hợp để yêu cầu kiến ​​xây dựng với một số tệp jar bên ngoài trong thư mục libs của tôi. Làm thế nào tôi nên làm điều này? Nó có phải là tài sản trong build.properties không? Tôi có cần phải sửa đổi build.xml bằng cách nào đó? Hoặc là có một giải pháp khác hoàn toàn?

Trả lời

32

nhưng bản dựng không thành công vì nó không phải là xây dựng với một số jarfiles Tôi có trong thư mục libs của tôi.

Và thông báo lỗi của bạn là ... cái gì? Tôi nghi ngờ bạn có thể hiểu sai thông báo lỗi.

Tôi muốn tìm ra cách thích hợp nói với kiến ​​để xây dựng với một số file jar bên ngoài trong libs của tôi thư mục. Làm thế nào tôi nên làm điều này?

Chỉ cần đặt chúng trong libs/, vì Ant sẽ thêm mọi thứ vào đó vào đường dẫn xây dựng của bạn. Xem this projectthis projectthis project để biết ví dụ.

+1

Ah, vấn đề là một trong những phụ thuộc của tôi là một phụ thuộc dự án chứ không phải là một sự phụ thuộc jar. Tôi sẽ sửa nó. – emmby

+0

Cảm ơn commonsware. Nếu bạn muốn có một đâm tại một theo dõi, tôi có một câu hỏi khác ở đây: http://stackoverflow.com/questions/2466437/how-to-build-an-android-test-app-with-a -dependency-on-another-app-using-ant – emmby

+0

Vâng, tôi thấy cái đó. Tôi không phải là fan của khung kiểm tra Android, vì vậy tôi không biết câu trả lời ở đó. Lấy làm tiếc! – CommonsWare

1

Tôi đồng ý với Mark, tuy nhiên, nếu bạn dự định sửa đổi kịch bản xây dựng của mình hơn nữa - bạn cần phải tùy chỉnh. Mang tác vụ từ android/platforms/android-PLATFORMVERSION/templates/android_rules.xml vào tệp build.xml của bạn và sửa đổi bất kỳ điều gì bạn muốn sửa đổi. Bao gồm vị trí cho libs bên ngoài.

14

Tôi đã dành chút thời gian cố gắng để API Facebook hoạt động với kiến. Bí quyết của tôi là thêm vào tệp default.properties của tôi.

android.library.reference.1=../Facebook 

Nơi ../Facebook chứa AndroidManifest.xml, vv Khóa thực là đường dẫn tương đối. Không sử dụng đường dẫn tuyệt đối vì Ant dường như coi thư mục dự án của bạn là thư mục gốc.

Điều này sẽ đúng với các dự án thư viện khác mà bạn đang đưa vào từ mã nguồn.

+0

rất hữu ích! Cảm ơn! – wallacer

+0

Hãy xem TicTacToeLib & TicTacToeMain trong các ví dụ về sdk. Và đọc các tệp README.txt. – douyw

+1

Đây chính xác là câu trả lời tôi cần, tóm tắt và cập nhật. – gregko

8

Tôi đã xử lý vấn đề tương tự. Tôi đang xây dựng dự án Android trên Jenkins bằng cách sử dụng Ant build.xml tiêu chuẩn (được tạo bởi Android SDK). Tôi cũng có tham chiếu đến một dự án Java khác với một số lớp miền được chia sẻ. Trong Eclipse không có vấn đề gì với nó. Dự án miền là một tham chiếu dự án. Tuy nhiên trên Jenkins domain.jar này được xây dựng bởi Maven và nó không thể truy cập được bởi dự án Android.

tôi cuối cùng đã giải quyết nó bằng cách thêm này vào cuối build.xml:

<target name="-pre-build"> 
    <copy todir="${jar.libs.dir}"> 
    <fileset 
     dir="../path-to-another-project/target" 
     includes="*.jar" /> 
    </copy> 
</target> 

bản này tất cả các lọ từ thư mục mục tiêu của dự án khác vào "libs" thư mục của dự án Android của tôi. Mục tiêu Ant -pre-build Ant được tự động gọi trước khi bắt đầu biên dịch Android.

+6

Thay vì thay đổi build.xml, bạn nên thêm một custom_rules.xml vào cùng thư mục với tệp build.xml. Đặt mục tiêu -pre-build trong đó và build.xml sẽ tự động nhập nó. custom_rules.xml có thể chứa tất cả các hoạt động xây dựng trước và sau của bạn – wallacer

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