2016-03-22 21 views
6

में एक प्रोजेक्ट बिल्ड के साथ कई एपीके फाइलें बनाएं मेरे पास मेरे एंड्रॉइड प्रोजेक्ट में दो स्वाद हैं, एक परीक्षण सर्वर के साथ काम करता है और एक उत्पादन के साथ। मैं एक स्ट्रिंग संसाधन के अंदर यूआरएल स्टोर करता हूं, इसलिए मैं संकलन के लिए चुने गए स्वाद के आधार पर सही यूआरएल तक पहुंच सकता हूं। आमतौर पर मुझे दोनों सर्वरों के लिए, प्रत्येक बार एक दिन के दौरान कई एपीके फाइलें बनाने की आवश्यकता होती है।एंड्रॉइड स्टूडियो

क्या हर बार जब मैं अपनी परियोजना चलाता हूं या बिल्ड मेनू से एपीके बनाता हूं तो दो एपीके फाइलें बनाने का कोई तरीका है?

+0

एक ग्रैडल प्लगइन भी है: https://github.com/JcMinarro/ProperDroid –

उत्तर

7

आप कुछ इस तरह है:

android { 
    productFlavors { 
     dev { 
      applicationId "your.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.78"' 

     } 

     prod { 
      applicationId "your.com.android" 
      buildConfigField 'String', 'HOST', '"http://yourserver.com"' 
     } 
    } 
} 

आप केवल Gradle में इकट्ठा चलाने के लिए है परियोजनाओं

enter image description here

और आप पा सकते हैं सभी विभिन्न apks/आउटपुट निर्माण/apk

enter image description here

आशा इस बार मैं और अधिक उपयोगी होगा

1

आप Gradle में इस कमांड लाइन का उपयोग कर सकते हैं:

./gradlew assemble 

या आप saparately डिबग या रिहाई क्रमशः

./gradlew assembleDebug 
./gradlew assembleRelase 
1

Mastering "Product Flavors" on Android के लिए सभी जायके उत्पन्न कर सकते हैं

केवल एक चीज जो आपको करना है वह इसे अपने प्रत्येक उत्पाद स्वाद पर परिभाषित करना है:

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
     } 

     prod { 
      applicationId "zuul.com.android" 
     } 
    } 
} 

स्वाद के आधार पर एकाधिक होस्टों को अनुरोध भेजें, जैसा कि पहले, आपको अपने उत्पाद स्वाद कॉन्फ़िगरेशन फ़ील्ड पर कुछ पैरा शामिल करना होगा।

android { 
    productFlavors { 
     devel { 
      applicationId "zuul.com.android.devel" 
      buildConfigField 'String', 'HOST', '"http://192.168.1.34:3000"' 

     } 

     prod { 
      applicationId "zuul.com.android" 
       buildConfigField 'String', 'HOST', '"http://api.zuul.com"' 

     } 
    } 
} 

उदाहरण के लिए, हम आपको बताएंगे कि कैसे आप रेट्रोफिट के साथ इस एकीकृत हैंडलिंग जो सर्वर आप इशारा कर रहे हैं और स्वाद के आधार पर बिना उचित सर्वर से अनुरोध भेजने के लिए कर सकते हैं की कोशिश करेंगे। इस मामले में यह Zuul Android एप्लिकेशन का एक अंश है:

public class RetrofitModule { 

    public ZuulService getRestAdapter() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(BuildConfig.HOST) 
       .setLogLevel(RestAdapter.LogLevel.FULL) 
       .build(); 
     return restAdapter.create(ZuulService.class); 
    } 

} 

आप देख सकते हैं आप बस चर तुम सिर्फ परिभाषित किया है का उपयोग करने की BuildConfigclass उपयोग करना होगा।

+0

हालांकि यह एक उपयोगी उदाहरण है, यह मूल प्रश्न का उत्तर नहीं देता है। –

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