2016-02-26 19 views
6

Bir ana kitaplık kaynağı olarak bir Android kitaplığı kullanan bir uygulama yapıyorum. Sonra bu kütüphaneyi kullanarak birden fazla uygulama var; Bu uygulamalar aynı koda sahip olacak, ancak bitiş noktaları gibi farklı yapılandırma alanlarına sahip olacak. kütüphanedeKitaplık derlemeyi yapılandırmaConfigFields uygulamada

build.gradle:

Bunu başarmak için, benim kütüphanenin build.gradle dosyasında buildConfigField var ve o zaman bu gibi aynı adı kullanarak benim app en build.gradle bu değeri geçersiz düşündüm: app

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

build.gradle:

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

Bunu nasıl gerçekleştireceğinizle ilgili herhangi bir fikir var mı?

Teşekkürler!

+0

IIRC, kütüphane paketi için bir tane ve uygulamanızın paketi için bir tane olmak üzere iki ayrı 'BuildConfig' sınıfınız var. Kitaplığınız uygulamanın BuildConfig'iyle ilgili hiçbir şey bilmiyor ve bir uygulamanın kütüphaneden 'BuildConfig'i geçersiz kılmasının bir yolunun farkında değilim. Diğer seçenekleri (ör. "" XML kaynaklarına işaret eden bildirim öğeleri, normal Java tabanlı yapılandırma, varlıkları geçersiz kılma) keşfetmeniz gerekebilir. – CommonsWare

cevap

7

Maalesef yapı yapılandırmalarını geçersiz kılabilirsiniz. Siz , resValue ile belirtilen kaynak değerlerini geçersiz kılabilirsiniz. Uygulama, başka bir şekilde değil, kitaplığı geçersiz kılabilir. Onları dışarı çekmek için bir bağlama ihtiyacınız var ve bunu uygulamada tek bir ya da her neyse paylaşabileceğiniz bir java nesnesine yapıştırmak için bunu yapabilirsiniz.

Uygulamaların bir kitaplık içine çekip varsayılanlarını geçersiz kılmasına izin vermek için bu numarayı geçmişte çok kullandım. Bu konuda here okuyabilirsiniz.

+0

Bu yaklaşımı takip ettim. Kitaplıktaki yapılandırma kaynaklarını geçersiz kılan uygulama başına bir config.xml oluşturdum. – Jorge

+0

Harika! Eğer senin için çalıştıysa, lütfen cevap verin ve cevabı kabul edin. –