2012-02-22 24 views
5

Tôi đang cố gắng để có được một xử lý trên toàn bộ điều này "Ant" buildsystem. Tôi đã tạo một tệp build.xml mà Android nguyên bản mang lại cho tôi bằng cách sử dụng lệnh: android update project -p ..Làm cách nào để biên dịch và đóng gói một dự án Android bằng Ant?

Trong khi điều này đã cho tôi một tệp build.xml mẫu, tôi muốn có thêm một vài tùy chọn. Cụ thể, tôi muốn có thể JAR và/hoặc Biên dịch dự án của tôi; tốt nhất là với số phiên bản.

Câu hỏi thưởng: Làm cách nào để loại trừ tệp khỏi bản dựng JAR của tôi. Ví dụ, tôi có một hoạt động mà tôi đã sử dụng để kiểm tra chức năng của mình, nhưng tôi không muốn nó được đưa vào JAR cuối cùng.

Tệp build.xml của tôi mà Android đã cung cấp cho tôi là Gisted here vì nó khá dài (chủ yếu là nhận xét).

EDIT: Tôi cũng đang sử dụng IntelliJ để không có chi tiết cụ thể về Eclipse!

+2

Bạn có ý gì khi "JAR và biên dịch dự án của tôi", xem xét rằng các ứng dụng Android không phải là các tệp JAR? – CommonsWare

+0

@CommonsWare, tôi thực sự có nghĩa là hai "mục tiêu". 1.Biên dịch mã của tôi để các lớp và các tệp dex và bất kỳ thứ gì nằm trong các thư mục chính xác của chúng. 2. JAR các tệp lớp mà tôi muốn để tôi có thể phân phối "thư viện" Android của tôi một cách thích hợp. – hwrdprkns

+0

Hơn nữa, tôi nên làm rõ. Tôi không biết liệu dự án của tôi có đủ điều kiện như một dự án "thư viện" hay không. Nhưng tôi chỉ có mã sử dụng SDK Android mà tôi muốn JARed để tôi có thể sử dụng nó trong một ứng dụng khác. Không hoạt động, chỉ là mã khác. – hwrdprkns

Trả lời

14

Cụ thể, tôi muốn có thể JAR và/hoặc Biên dịch dự án của mình; tốt nhất là với số phiên bản.

Trong Android, số phiên bản dành cho ứng dụng chứ không phải JAR.

đó đang được nói, thêm một mục tiêu jar là một vấn đề này thêm vào tập tin build.xml của bạn hướng về phía dưới:

<target name="jar" depends="debug"> 
    <jar 
     destfile="bin/whatever-you-want-to-call-the.jar" 
     basedir="bin/classes" 
    /> 
</target> 

Sau đó, chạy ant jar để biên dịch và đóng gói các tập tin JAR.

Bạn sẽ thấy mẫu này trong hầu hết các thành phần Android có thể sử dụng lại trong my GitHub area (xem cwac- repos).

Câu hỏi thưởng: Làm cách nào để loại trừ tệp khỏi bản dựng JAR của tôi. Ví dụ, tôi có một hoạt động mà tôi đã sử dụng để kiểm tra chức năng của mình, nhưng tôi không muốn nó được đưa vào JAR cuối cùng.

Sử dụng excludes hoặc excludesfile, như được mô tả trong jar Ant task documentation.

+0

Hoàn hảo. Ngoài ra, 'excludees =" **/ExcludedFile.class "' loại trừ tệp bạn không thích. Và 'depends =" debug "' là phép thuật yêu cầu biên dịch trước. – hwrdprkns

+0

@hwrdprkns Bạn có thể giải thích thêm một chút về ý nghĩa của "ma thuật đòi hỏi biên dịch trước" không? Bạn có nói rằng chỉ định "phụ thuộc = 'debug'" lực lượng kiến ​​để biên dịch trước khi xây dựng các jar? EDIT: Trên thực tế sau khi đọc nhiều hơn, điều này có nghĩa là khi bạn gọi là "ant jar" nó nhận ra nó cần phải làm "ant debug" đầu tiên? Và tôi cho rằng chúng tôi sử dụng gỡ lỗi thay vì phát hành bởi vì chúng tôi không quan tâm đến việc ký hợp đồng với một cái bình? –

1

Để sử dụng lại các dự án Android và không phải Android, tôi khuyên bạn nên xem Plugin Android Maven. Nó tận dụng lợi thế của quản lý phụ thuộc và các tính năng mạnh mẽ khác của Maven và sẽ phù hợp hơn với những gì bạn muốn làm.

Thanh toán số webpage and documentation trên đó và có thể chương về Android development in Maven : The Complete Reference Tôi đã viết để hiểu thêm một chút cũng như có điều gì đó để xem về Maven.

Plugin Android hỗ trợ tái sử dụng cho các đồ tạo tác bình thường và nếu có các phụ thuộc Android trong mã, bạn có thể sử dụng các dự án apklib. Rất nhiều dự án như Roboguice, robolectric, actionbarsherlock và những dự án khác sử dụng tính năng này thành công.

+0

Không phải câu hỏi được yêu cầu, nhưng +1 vì đây trông giống như một công cụ tuyệt vời mà tôi nên biết. – hwrdprkns

+0

Không vấn đề gì .. chỉ cố gắng cứu bạn khỏi địa ngục xml và rất nhiều nỗi đau khi bạn bắt đầu tùy biến kiến ​​kiến. –

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