2016-02-26 14 views
6

Tôi đang tạo ứng dụng sử dụng thư viện Android làm nguồn chính. Sau đó, tôi có nhiều ứng dụng sử dụng thư viện đó; các ứng dụng này sẽ có cùng mã, nhưng các trường cấu hình khác nhau, chẳng hạn như điểm cuối và như vậy.Ghi đè xây dựng thư việnConfigFields trong ứng dụng

Để thực hiện điều này, tôi nghĩ rằng tôi có thể có một buildConfigField trong tập tin thư viện của tôi build.gradle, và sau đó ghi đè lên giá trị đó trong ứng dụng của tôi build.gradle bằng cách sử dụng cùng tên, như thế này:

build.gradle trong thư viện:

buildConfigField "String", "API_BASE_URL", "\"http://arandomapibaseurl.com\"" 

build.gradle trong ứng dụng:

buildConfigField "String", "API_BASE_URL", "\"http://myrealapi.com\"" 

Bất kỳ ý tưởng nào về cách thực hiện điều này?

Cảm ơn!

+0

IIRC, bạn có hai lớp 'BuildConfig' riêng biệt, một cho gói thư viện của bạn và một cho gói ứng dụng của bạn. Thư viện của bạn không biết gì về 'BuildConfig' của ứng dụng và tôi không biết cách để ứng dụng ghi đè' BuildConfig' từ thư viện. Bạn có thể cần khám phá các tùy chọn khác (ví dụ: '' các phần tử tệp kê khai trỏ đến tài nguyên XML, cấu hình dựa trên Java thông thường, ghi đè nội dung). – CommonsWare

Trả lời

7

Rất tiếc, bạn không thể ghi đè lên các cấu hình xây dựng. Bạn có thể ghi đè các giá trị tài nguyên được chỉ định bằng resValue. Ứng dụng có thể ghi đè thư viện chứ không phải cách khác. Bạn chỉ cần một bối cảnh để kéo chúng ra, và bạn có thể làm điều đó khi khởi động ứng dụng để gắn chúng vào một đối tượng java mà bạn có thể chia sẻ như một singleton hay bất cứ thứ gì.

Tôi đã sử dụng mẹo này rất nhiều trong quá khứ để cho phép các ứng dụng kéo vào thư viện và ghi đè các giá trị mặc định của ứng dụng đó. Bạn có thể đọc về nó here.

+0

Tôi đã kết thúc theo cách tiếp cận đó. Tôi vừa tạo một config.xml cho mỗi ứng dụng ghi đè các tài nguyên cấu hình trong thư viện. – Jorge

+0

Tuyệt vời! Nếu nó làm việc cho bạn, xin vui lòng upvote và chấp nhận câu trả lời. –

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