2015-09-27 13 views
12

मैं एक ऐप बुद्धि अलग बिल्ड संस्करण स्वाद बना रहा हूं। स्वाद "नि: शुल्क" और "भुगतान" हैं। मैं अपने जावा कक्षाओं पर कुछ तर्क बनाना चाहता हूं, जो ऐप "भुगतान" होने पर ही ट्रिगर हो जाएं।एंड्रॉइड - स्वाद के आवेदन कैसे प्राप्त करें

gradle.build

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
    } 

एक बार मैं आवेदन आईडी मैं कुछ इस तरह कर सकता है: इसलिए मैं "applicationId" Gradle निर्माण प्रक्रिया के दौरान सेट प्राप्त करने के लिए एक मार्ग के रूप में नीचे दिखाया गया की जरूरत है:

if(whateverpackageid.equals("paid")) { 
     // Do something or trigger some premium functionality. 
    } 

हूँ मैं कहना है कि Gradle निर्माण प्रक्रिया "applicationId" अंततः "पैकेज नाम" हो जाता है के दौरान एक बार एप्लिकेशन संकलित किया गया है सही हूँ? यदि ऐसा है तो "एप्लिकेशन आईडी" या "पैकेज नाम" प्राप्त करने का सबसे अच्छा तरीका क्या है ताकि मैं अपनी जावा फाइलों में कुछ स्वाद निर्भर तर्क लागू कर सकूं?

उत्तर

20

मैं आपके उत्पाद स्वादों में बिल्ड कॉन्फ़िगरेशन चर का उपयोग करूंगा। की तर्ज पर कुछ:

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
     buildConfigField "boolean", "PAID_VERSION", "false" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
     buildConfigField "boolean", "PAID_VERSION", "true" 
    } 
} 

फिर एक निर्माण के बाद आप का उपयोग कर सकते हैं:

if (BuildConfig.PAID_VERSION) { 
    // do paid version only stuff 
} 

आप एक सिंक करना पड़ सकता है/Gradle पर निर्माण करने से पहले आपको संकलन और आयात कर सकते हैं विशेषता जोड़ने के बाद बिल्डकॉन्फिग क्लास जो ग्रैडल आपकी ओर से उत्पन्न करती है।

10

मुझे APPLICATION_ID, BUILD_TYPE, FLAVOR, VERSION_CODE और VERSION_NAME जैसे सभी मान प्राप्त करने के लिए सबसे अच्छा समाधान मिला।

बस लिखें: Log.d ("एप्लिकेशन आईडी:", BuildConfig.APPLICATION_ID); आपके कोड में यह आपके स्वाद के APPLICATION_ID प्रदान करेगा।

BuildConfig.java

public final class BuildConfig { 
    public static final boolean DEBUG = Boolean.parseBoolean("true"); 
    public static final String APPLICATION_ID = ""; 
    public static final String BUILD_TYPE = "debug"; 
    public static final String FLAVOR = ""; 
    public static final int VERSION_CODE = 1; 
    public static final String VERSION_NAME = ""; 
} 

अधिक जानकारी के लिए आप इस लिंक का उल्लेख कर सकते हैं: http://blog.brainattica.com/how-to-work-with-flavours-on-android/

+0

सबसे अच्छा समाधान, स्वीकार किया जाना चाहिए –

संबंधित मुद्दे