2012-07-02 28 views
8

Tôi tiếp tục quay trở lại vấn đề này, vì dường như không có giải pháp sạch. Có ai có chiến lược tốt để loại trừ tài nguyên khỏi dự án con trong Android không?Bao gồm/loại trừ tài nguyên có điều kiện cho apk Android xây dựng

Tôi có hai kịch bản:

1 - Dự án thư viện cơ sở có file nội địa hóa cho en, es vv

dự án --Child 1 sử dụng tất cả các tin cục bộ, và tất cả mọi thứ là tốt

- Dự án -Child 2 chỉ được bản địa hóa sang tiếng Anh, nhưng cuối cùng .apk sẽ có nội địa hóa một phần do tài nguyên gốc (mặc dù ADT19 hoặc do đó đã thêm quy tắc Lint để cảnh báo/ngăn bạn thực hiện việc này).

Giải pháp duy nhất tôi có ngay bây giờ là có một thư viện cha mẹ riêng cho nội địa hóa và chỉ bao gồm nó trong dự án con 1. Đây là một nỗi đau lớn nếu bạn có nhiều dự án thư viện.

2 - Loại trừ tài nguyên dành riêng cho xây dựng. Tôi có một vài hình ảnh chỉ cần thiết cho các bản dựng ứng dụng dành riêng cho các ứng dụng của tôi, được kích hoạt bởi cờ. Mã điều kiện hoạt động tốt, nhưng các tài nguyên luôn được bao gồm.

Tôi không muốn tạo một dự án con khác cho MỌI MỘT ứng dụng của tôi. Có cách nào để thiết lập một cờ xây dựng/biên dịch để cắt bớt các tài nguyên hình ảnh cụ thể ra để họ không nhận được vào cuối cùng .apk?

Vấn đề thứ hai có thể cụ thể đối với tôi, nhưng tôi ngạc nhiên rằng tôi không thể tìm thấy bất kỳ cuộc thảo luận tốt nào về điểm đầu tiên. Không có nhà phát triển nào khác chỉ bản địa hóa một số ứng dụng? Hay hầu hết mọi người chỉ bỏ qua vấn đề này?

+0

Tôi đã xem nói về cách thêm tệp vào tệp.apk, nhưng tôi đang tìm kiếm một cái gì đó nhiều hơn một chút như ProGuard - tự động và được xây dựng vào các công cụ hơn là hack cuối cùng .apk. – ProjectJourneyman

+0

Kịch bản của bạn có thể thực hiện được bằng cách sử dụng các công cụ xây dựng bên ngoài như Ant hoặc Maven, cả hai đều cung cấp khả năng kiểm soát tốt từng bước trong quá trình xây dựng (biên dịch, dex, đóng gói và vv). nếu sử dụng Maven, loại trừ tài nguyên là khá dễ dàng thông qua [maven-resource-plugin] (http://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html). – yorkw

+0

Tôi có thể cần phải đi theo cách đó. Tôi đã hy vọng cho một giải pháp sạch hơn (và lý tưởng đơn giản), mặc dù. – ProjectJourneyman

Trả lời

3

1 - Dự án thư viện cơ sở có file nội địa hóa cho en, es vv

Bạn có hai dự án sử dụng thư viện này, và chỉ có một trong số họ cần tất cả các bản dịch. Do đó, những bản dịch đó có thể là trong dự án sử dụng thư viện và cần các bản dịch, không phải trong chính thư viện. Điều này không khác với bất kỳ tài nguyên tùy chỉnh dự án nào khác của thư viện (ví dụ: thay thế biểu tượng, thay thế bố cục).

Bây giờ, khi bạn bắt đầu tham gia vào các hỗn hợp phức tạp hơn (ví dụ: hai dự án cần bản dịch và bản dịch thứ ba không), thì bạn bắt đầu gặp sự cố.

Loại trừ tài nguyên dành riêng cho xây dựng. Tôi có một vài hình ảnh chỉ cần thiết cho các bản dựng ứng dụng dành riêng cho ứng dụng của tôi, được kích hoạt bởi cờ. Mã điều kiện hoạt động tốt, nhưng các tài nguyên luôn được bao gồm.

Xav và tôi trò chuyện một chút về tài nguyên có điều kiện in this issue. Sự tập trung của anh ta là về gỡ lỗi so với sản xuất (tài nguyên tương đương với BuildConfig.DEBUG), nhưng có vẻ như một cái gì đó linh hoạt hơn là một khả năng.

Cả hai thứ này đều có thể được xử lý bởi tập lệnh tạo bản phát hành tùy chỉnh. Trong các bản dựng gỡ lỗi bình thường, bạn sẽ để nó một mình; trong một bản xây dựng sản xuất, có một kịch bản lệnh Ant làm việc một bản sao của dự án, cắt tỉa các thư mục không cần thiết, trước khi biên dịch, ký, và zipaligning.

+0

Đó là những gì tôi đã làm cho project3, trong đó có một bản dịch một lần sang tiếng Ý (và do đó một vài tệp strings_libx.xml tương ứng với các thư mục gốc của cha mẹ). Tuy nhiên, cây libs và ứng dụng của tôi ngày càng phức tạp hơn và tôi không hài lòng với việc thêm độ phức tạp (độ phức tạp bảo trì do các tệp chuỗi trùng lặp hoặc độ phức tạp của không gian làm việc với LibX để tách tài nguyên ngôn ngữ ra). Tôi nghĩ rằng các văn bản có thể được trên tường mặc dù - Tôi cần phải đào sâu hơn vào các công cụ và kịch bản một số hành động để cắt giảm đầu ra. – ProjectJourneyman

+0

Tôi vẫn chưa tìm thấy thời gian để xây dựng một số tập lệnh Ant, nhưng tôi bắt đầu nghĩ rằng đó thực sự là giải pháp đúng. Khi nhu cầu của tôi trở nên phức tạp hơn, không có sự thay thế cho sự linh hoạt của các kịch bản của riêng tôi. Tôi không nghĩ cờ DEBUG sẽ cung cấp đủ khả năng cấu hình. Ngoài ra, nếu tôi chờ đợi đủ lâu, hệ thống xây dựng Android mới với Gradle sẽ được hoàn thành và tôi chỉ có thể biết rằng: http://tools.android.com/tech-docs/new-build-system – ProjectJourneyman

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