2016-04-07 23 views
2

Ekibim Git ile çalışıyor ve şimdi bir android uygulaması oluşturuyoruz. Bu uygulama geliştirirken her geliştiricinin kendi bilgisayarında oluşturduğu web servisimizi tüketir.Android geliştirici değişkenleri başına

Uygulama içinde localhost'u kullanamadığımızdan (aygıtın kendisine işaret ettiği için), ağ adresini (ör. 192.168.1.123) belirtmemiz gerekir, artık sabit kodlanmış. Sorun şu ki, çoğunlukla ağ adreslerimiz aynı değildir ve her geliştirici kodlamak için adresi manuel olarak düzenlemelidir.

Bu işlemi yapmak için daha ilginç yollar bulmaya çalışıyorum. İlk tahminim, Rails 'config/application.yml ya da Spring Boot'un application.properties gibi bir şey yapabilmemdi. Bu dosya .gitignore'da olurdu ve dev ortamını ayarlarken, her geliştirici ağ adresini orada bir değişkende ayarlayacaktır. Bu yaklaşım temel olarak bu dosyayı CI sunucularına kurabildiğimiz için, dağıtımın üretim ortamlarında otomatikleştirilebildiğinden (örneğin, geliştirici ağ adresi yerine my-aplication.com işaret ederek) güzel olabilir.

Düşündüğüm başka bir yöntem de, my-application.dev gibi bir şey kullanmak ve ana makine (öykünücüyü kullanırken) çözümünü, ana bilgisayar dosyasında geri dönmesini sağlamaktır. Bu yaklaşımda iki temel sorun vardır: a) Projenin klasöründe ayarları tutmak istiyoruz. b) Üretime dağıtım yaparken bunu manuel olarak düzenleyeceğiz.

Peki, bunu yapmanın bir yolu var mı? Bu ayarların, projenin klasöründe ve IDE'ye bağlı olmayan bir klasörde olmasını takdir etmekteyiz.

Şimdiden teşekkürler!

cevap

0

Adım # 1: Proje kök, gradle.properties bir özellik tanımlayın söz konusu IP adresini içeren dizin, örneğin:

DEV_SERVER_URL=https://192.168.1.123 

Adım # 2: app/build.gradle dosyasında BuildConfig veya bir dize kaynağı üzerinden Java kodu için kullanılabilir hale getirmek için, resValue yoluyla muhtemelen buildConfigField aracılığıyla bu özelliği göstermiyor ya. Ekstra kredi için, release (muhtemelen üretim Web sunucusuna işaret eden) üretim değerini kullanarak yalnızca debug yapı türünde mülkü kullanın. Örneğin:

debug { 
     buildConfigField "String", "SERVER_URL", '"'+DEV_SERVER_URL+'"' 
    } 

    release { 
     buildConfigField "String", "SERVER_URL", '"https://prod.this-is-so-fake.com"' 
    } 

Adım # 3: Adım 2. kurmak BuildConfig alanında veya dize kaynak başvurmak için Java kodunu değiştirin.

+0

Huh, efsanenin cevabından 1 saniye geç –

+1

@AntonShkurenko: Özür dilerim. Yazmaya çalışacağım ... daha ... yavaşça ... ... ... geleceği ... :-) – CommonsWare

0

Properties

def Properties props = new Properties() 
props.load(new FileInputStream(rootProject.file('app/custom.properties'))) 

Sonra tanımlayın:

buildConfigField "String", "CUSTOM_FIELD", '"'+props['customFieldName']+'"' 

Sizin custom.properties gibi bir şey içermelidir:

customFieldName=customString 
İlgili konular