मेरे पास 2 बिल्ड टाइप (डीबग, रिलीज) और 2 उत्पाद फ़्लेवर्स (उत्पाद 1, उत्पाद 2) हैं। मैं प्रत्येक buildType और productFlavors के लिए buildConfigField को परिभाषित करना चाहता हूं। BuildConfigField सर्वर से डेटा डाउनलोड करने के लिए ऐप यूआरएल है, और यह प्रत्येक उत्पाद फ्लेवर और बिल्ड टाइप के लिए बदलता है।एंड्रॉइड ग्रैडल में स्वाद प्रति कोड
अब, मैं है:
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
लेकिन मैं कुछ इस तरह हैं:
buildTypes {
debug {
debuggable true
}
release {
debuggable false
}
}
productFlavors {
product1 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api1.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api1.release.com"'
}
product2 {
debug {
buildConfigField STRING, "URL_BASE", '"https://api2.debug.com"'
}
release {
buildConfigField STRING, "URL_BASE", '"https://api2.release.com"'
}
}
}
मैं कैसे इस लक्ष्य को हासिल कर सकते हैं?
अद्यतन:
प्रत्येक URL_BASE एक अलग तरीके की है तो मैं नहीं समूह यूआरएल कर सकते हैं। एक सकारात्मक समाधान विभिन्न प्रकार के प्रकारों में 2 स्वाद के यूआरएल बेस को जोड़ने और स्वाद में सही का चयन करना है।
buildTypes {
debug {
debuggable true
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.deb.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.debug.com"'
}
release {
debuggable false
buildConfigField STRING, API_VARIANT_PRODUCT1, '"api1.release.com"'
buildConfigField STRING, API_VARIANT_PRODUCT2, '"api2.release.com"'
}
}
productFlavors {
product1 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT1 + "/v1"'
}
product2 {
buildConfigField STRING, URL_BASE, '"https://" + API_VARIANT_PRODUCT2 + "/v1"'
}
}
}
अद्यतन 2
आप Gradle में संसाधनों को जोड़ने के लिए, एक 'KEY_MAP' की तरह की जरूरत है समाधान इस page में है।
जावा वर्गों के बारे में क्या जो प्रत्येक निर्माण प्रकार के बराबर हैं? क्या मुझे product1Debug, product1Release में जोड़ने के लिए प्रत्येक जावा क्लास क्लोन करना है? या मुझे product1 नामक फ़ोल्डर बनाना है और यह कोड इसमें है ?? उदाहरण के लिए SplavaActivity.java नामक एक जावा क्लास जो कि निर्माण प्रकार डीबग और उत्पाद 1 में रिलीज़ के लिए समान है। धन्यवाद – beni
जावा कक्षाओं के लिए आपको प्रत्येक बिल्ड टाइप के लिए 1 वर्ग रखना होगा। आप इस मामले में उपयोग कर सकते हैं: '- ऐप/src/डीबग:' '- ऐप/src/product1Release' ' - ऐप/src/product2Release' –