2016-03-01 17 views
15

मैं कर रहा हूँ एंड्रॉयड और एक परियोजना मैं कहाँ देखते हैं कि API कुंजी है कि मुझे मिल गया के रूप में gradle.properties में सहेजा गया है पर काम कर रहा करने के लिए नए: build.gradle(module:app) मेंबचत gradle.properties में API कुंजी

MyOpenWeatherMapApiKey="1c3ae96f93a0094e8a7chsjdgfid04aed3f10"

और फिर मैं निम्नलिखित लाइनों द्वारा जोड़ा जा रहा:

buildTypes.each { 
      it.buildConfigField 'String', 'OPEN_WEATHER_MAP_API_KEY', MyOpenWeatherMapApiKey 
     } 

तो, अपने मुख्य कार्यक्रम में मैं इस एपीआई जिसका URL कोड के इस टुकड़े से मिल गया है का उपयोग कर डेटा तक पहुँचने हूँ:

final String FORECAST_BASE_URL = "http://api.openweathermap.org/data/2.5/forecast/daily?"; 
      final String QUERY_PARAM = "q"; 
      final String FORMAT_PARAM = "mode"; 
      final String UNITS_PARAM = "units"; 
      final String DAYS_PARAM = "cnt"; 
      final String APPID_PARAM = "APPID"; 
      Uri builtUri = Uri.parse(FORECAST_BASE_URL).buildUpon() 
        .appendQueryParameter(QUERY_PARAM, params[0]) 
        .appendQueryParameter(FORMAT_PARAM, format) 
        .appendQueryParameter(UNITS_PARAM, units) 
        .appendQueryParameter(DAYS_PARAM, Integer.toString(numDays)) 
        .appendQueryParameter(APPID_PARAM, BuildConfig.OPEN_WEATHER_MAP_API_KEY) 
        .build(); 
      URL url = new URL(builtUri.toString()); 

तो, मेरा सवाल यह है कि धीरे-धीरे भाग में भाग को जोड़ने के लिए परिवर्तन करने के सभी तनाव क्यों लेते हैं। क्या हम सीधे मुख्य कार्यक्रम में नहीं पहुंच सकते हैं?

और मेरे प्रश्न का दूसरा भाग वास्तव में धीरे-धीरे buildTypes.each{} ब्लॉक के साथ धीरे-धीरे हो रहा है?

+1

धन्यवाद। आपके प्रश्न ने मुझे अपनी परियोजना को कॉन्फ़िगर करने में मदद की। –

उत्तर

19
  1. इस अविवेक के विचार आप फ़ाइलों कि संस्करण नियंत्रण पर अपलोड नहीं कर रहे हैं में एपीआई कुंजी संग्रहीत करने की अनुमति देना है: gradle.properties एक स्थानीय फ़ाइल है और संस्करण नियंत्रण में नहीं रखना चाहिए, और BuildConfig एक उत्पन्न होता है कक्षा, तो यह केवल निर्माण समय पर बनाया जाएगा। एपीआई कुंजी को सादा स्ट्रिंग के रूप में कहीं भी स्टोर करना निश्चित रूप से आसान है, लेकिन फिर आपको इसे रेपो में ले जाना होगा।
  2. बिल्ड समय के दौरान, ग्रैडल कुछ बिल्ड-संबंधित स्थिरांक स्टोर करने के लिए BuildConfig फ़ाइल उत्पन्न करेगा। में कस्टम फ़ील्ड जोड़ने के लिए ग्राडल को निर्देश देने के लिए आप buildConfigField कमांड का उपयोग कर सकते हैं। प्रोजेक्ट बनने के बाद, आप इन स्रोतों को अपने स्रोत कोड के अंदर संदर्भित कर सकते हैं।
+0

मैं अन्य एपीआई कुंजी के लिए manifest.xml फ़ाइल में इसका उपयोग कैसे कर सकता हूं? –

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