प्रस्तावना: यह एक प्रश्न नहीं है कि एंड्रॉइड ऐप में बिल्ड प्रकार और उत्पाद जायके का उपयोग कैसे करें। मैं इसमें शामिल बुनियादी अवधारणाओं को समझता हूं। यह प्रश्न यह समझने की कोशिश करने के बारे में अधिक है कि कौन से कॉन्फ़िगरेशन को बिल्ड प्रकार में निर्दिष्ट किया जाना चाहिए, कौन से कॉन्फ़िगरेशन को एक उत्पाद स्वाद में निर्दिष्ट किया जाना चाहिए, और क्या कोई भेद वास्तव में आवश्यक है।
इस हफ्ते, मैं एंड्रॉइड ऐप्स के लिए ग्रेडल कॉन्फ़िगरेशन के बारे में अधिक सीख रहा हूं। मुझे शुरू में लगा कि मेरे पास बिल्ड टाइप्स बनाम प्रोडक्ट फ्लेवर पर एक अच्छा हैंडल है, लेकिन जितना गहरा मैं डॉक्यूमेंटेशन में गया उतना ही मुझे इस बात का अहसास हुआ कि दोनों के बीच का अंतर मेरे लिए बिल्कुल भी स्पष्ट नहीं है।
चूंकि एक अच्छी तरह से परिभाषित पदानुक्रम है (इस अर्थ में कि बिल्ड प्रकारों में निर्दिष्ट गुण उत्पाद स्वादों में निर्दिष्ट लोगों से अधिक पूर्वता लेते हैं), मुझे समझ में नहीं आता है कि बिल्ड प्रकारों और उत्पाद स्वादों के बीच अंतर करने की आवश्यकता क्यों है। क्या सभी गुणों और विधियों को उत्पाद स्वाद डीएसएल ऑब्जेक्ट में मर्ज करना बेहतर नहीं होगा, और फिर निर्माण प्रकार को एक (डिफ़ॉल्ट) स्वाद आयाम के रूप में माना जाएगा?
कुछ ठोस उदाहरण जो मेरे भ्रम का कारण बने:
signingConfig
संपत्ति का निर्माण प्रकार और उत्पाद जायके दोनों में सेट किया जा सकता है ... लेकिनminifyEnabled
(और, मुझे लगता है,shrinkResources
?) केवल निर्माण प्रकार में विन्यस्त किया जा सकता।applicationId
केवल उत्पाद के स्वादों में निर्दिष्ट किया जा सकता है ... औरapplicationIdSuffix
केवल निर्माण प्रकारों में निर्दिष्ट किया जा सकता है !?
वास्तविक प्रश्न :
उपरोक्त उदाहरणों को देखते हुए: बिल्ड प्रकार बनाम उत्पाद जायके की भूमिकाओं के बीच एक स्पष्ट अंतर है?
यदि हां, तो इसे समझने का सबसे अच्छा तरीका क्या है?
यदि नहीं, तो अंततः निर्माण के प्रकारों और उत्पाद जायके को एक एकल विन्यास योग्य डीएसएल वस्तु में विलय करने की योजना है?
applicationId
, उदाहरण के लिए।