2014-05-09 30 views
16

miras Ve ben src klasör her yapı türü bir klasör için sahip olabileceği, biliyorum. o an kindle andagradle: Android Stüdyo (Android Studio) 4 inşa tipleri <pre><code>android { buildTypes { release { ... } debug { ... } kindle { ... } kindle_debug { ... } } } </code></pre> <p></p> gradle içinde ben buildtype

src/ 
    -- debug 
    -- kindle 
    -- kindle_debug 
    -- main // used for every project 
    -- release 

içine biter Yani release aynıdır ve kindle_debugdebug aynıdır.

Kaynak klasörlerini çoğaltmaktan nasıl sakınabilirim? release ve debug'dan mi mi yoksa build.gradle dosyasında src klasörlerini kendim ayarlamam için bir yol var mı?

Düzenleme: Bir çözüm işe yarayacak gibi görünüyor, ancak bağlantı noktaları ayarlamak, ancak Mac OS ve Windows işletim sistemini kullanmak istiyorum ve her yeni kullanıcı kendileri tarafından simetiklerini ayarlamak istemiyor.

Düzen 2: Artık ürün aromalarını kullanıyorum, bunun için bende hata ayıklama/serbest bırakma ve bu google, amazon ve samsung ile. Bu benim amacım için en iyi çözüm.

cevap

31

Aşağıdaki gibi inşa türlerinden devralabilir: Ben doğru bu anlamak

buildTypes { 
    release { ... } 
    debug { ... } 

    kindle { 
     initWith buildTypes.release 
     ... 
    } 
    kindle_debug { 
     initWith buildTypes.debug 
     ... 
    } 
    } 
+3

İkinci kez test ettim. 'Release' /' debug' klasörlerimi kullanmaz. Yalnızca varsayılan sürümde 'release' /' debug' olarak tanımlanan ayarları ayrı ayrı kullanmak görünüyor. – mars3142

+0

İmzalama yapılandırmasını miras almanız gerekiyorsa - çalışmamda hata ayıklama yapı türünden çalışır. – AgentKnopf

1

sadece birkaç dosyaları ayıklama ve bırakın kurar arasında farklılık mı istiyorsunuz?

https://stackoverflow.com/a/28279105/1041533

Burada yukarıdaki cevabın ilgili kısmını yapıştırmak edeceğiz Bütünlük adına:

  1. Ressource dizin dayalı yaklaşım

bir tahliye veya bir hata ayıklama yapı olmasına bağlı olarak her müşterinin xml klasöründe bir dosyayı değiştirmek oldu. Bu, ilgili bir klasör yapısı ile elde edilebilir. Orijinal soruya göre 3 müşterimiz var ve her müşterinin bir hata ayıklaması ve bir yayın oluşturma sürümü var. Yukarıda belirtilen xml dosyaları her müşteri ve yapı tipi için farklıdır. Böylece, aşağıdaki dizin yapısı:

src/ 
    - customerA 
    //Contains all relevant resource files specific to customer A 
    - customerB 
    //Contains all relevant resource files specific to customer B 
    - customerC 
    //Contains all relevant resource files specific to customer C 

    - customerADebug 
    //Contains debug server-settings file for customer A 
    - customerBDebug 
    //Contains debug server-settings file for customer B 
    - customerCDebug 
    //Contains debug server-settings file for customer C 
    - customerARelease 
    //Contains release server-settings file for customer A 
    - customerBRelease 
    //Contains release server-settings file for customer B 
    - customerCRelease 
    //Contains release server-settings file for customer C 

Böylece her bir ürün lezzet için ana içerik (yukarıdaki parçacığının ilk kısmını görmek customerÃ, customerB vs.) lezzet olarak aynı isimde klasörde oldu. Şimdi bu bir dosya, her bir müşteri için bir hata ayıklama veya yayın oluşturma yapılıp yapılmadığına bağlı olarak farklıdır. CustomerADebug gibi uygun klasörlere yerleştirilir -> hata ayıklama modu için sunucu ayarlarında dosya içerir vb.

Örneğin, bir hata ayıklama veya sürüm oluşturma oluşturursanız, doğru dosya seçilecektir. Bunu daha da açıklığa kavuşturmalıysam, lütfen bana haber verin.

3

cevap biraz geç olabilir ama ben benzer bir sorun vardı ve aşağıdakileri yaparak bu çözmek başardı:

android { 
    sourceSets { 
     kindle { 
      java.srcDirs = ["src/release/java", "src/main/java"] 
     } 
     kindle_debug { 
      java.srcDirs = ["src/debug/java", "src/main/java"] 
     } 
    } 
} 

Yapınızda için bu eklerseniz

.gradle dosyası, kindle derleme türü sadece java dosyalarını sürümden ve ana klasörden kullanacak ve kindle_debug derleme türü debug ve release klasörünü kullanacaktır.

Tabii ki kindle klasör veya kindle_debug klasörü ekleyebilirsiniz:

java.srcDirs = ["src/kindle/java", "src/release/java", "src/main/java"] 
java.srcDirs = ["src/kindle_debug/java", "src/debug/java", "src/main/java"] 

ancak yinelenen sınıf hataları karşılaşabilirsiniz.

+0

İkinci düzenlememi gördün mü? Artık yapı tipleri yerine ürün lezzetlerini kullanıyorum. Bu değişiklik, ihtiyaçlarım için çok iyi çalışıyor. – mars3142

+0

Bunu görmedim :) Ama benim durumumda bu bir seçenek değil ... – PaMaDo

İlgili konular