2013-06-14 10 views
22

मेरे पास एक ऐसा ऐप है जिसे अलग-अलग ग्राहकों (ब्रांडिंग, कॉन्फ़िगरेशन और ग्राहकों के बीच प्री-लोड डेटा परिवर्तन) के लिए विभिन्न संसाधनों के साथ कई बार निर्माण करने की आवश्यकता है।क्या एक्लिप्स के साथ एंड्रॉइड के लिए ग्रैडल बिल्ड सिस्टम का उपयोग करना संभव है?

इस वर्ष के Google I/O के बाद मैंने नए ग्रैडल-आधारित एंड्रॉइड बिल्ड-सिस्टम के बारे में सुना है। तो मैंने सोचा, ग्रैंडल बिल्ड स्क्रिप्ट का उपयोग करके इस एक-स्रोत/एकाधिक-एपीके परिदृश्य को महसूस करना एक अच्छा विचार होगा।

अब मेरा प्रश्न आता है: मैं ग्रहण के लिए चिपकने के दौरान भवन के लिए ग्रैडल का उपयोग कैसे शुरू कर सकता हूं? प्रोजेक्ट को अभी भी अपरिपक्व एंड्रॉइड स्टूडियो में परिवर्तित करने के लिए मुझे ऑनलाइन पठन मिले। मैं एंड्रॉइड स्टूडियो में माइग्रेट करना बंद कर दूंगा जब तक कि Google द्वारा उत्पादन के उपयोग के लिए "सुरक्षित" घोषित न किया जाए।

आदर्श रूप से, मैं बिल्ड स्क्रिप्ट (ओं) को डीबग और एक्लिप्स के रन कॉन्फ़िगरेशन में हुक करने में सक्षम होना चाहता हूं, वैसे ही जैसे मैं चुन सकता हूं और एक्सकोड में डिबगिंग और संग्रह के लिए विभिन्न बिल्ड लक्ष्य चुन सकता हूं । यदि यह संभव है, तो उस काम को करने के लिए किन कदमों की आवश्यकता है?

मैं इन सवालों की नोबिश गुणवत्ता के लिए क्षमा चाहता हूं, लेकिन मेरे लिए यह वास्तव में एक अनदेखा देश है। किसी भी मदद की सराहना की है।

संपादित करें: हमारी टीम देर से अक्टूबर 2013 में और संस्करण 0.4 के बाद से एंड्रॉयड स्टूडियो के लिए चले गए थे गया है कम और कम कीड़े का सामना कर रहे हैं। यदि आपका संगठन विकास के लिए प्री-1.0 वातावरण को अपनाने के बारे में अति रूढ़िवादी नहीं है, तो मैं आपको ठंडे पानी में कूदने के लिए प्रोत्साहित करता हूं और एंड्रॉइड स्टूडियो और इसकी ग्रैडल बिल्ड सिस्टम के साथ काम करने का प्रयास करता हूं। आईएमएचओ गायब होने वाली एकमात्र महत्वपूर्ण बात इकाई परीक्षण के लिए सभ्य समर्थन है।

+1

AFAIK, वर्तमान समय में एक्सेलिस से ग्रैडल-आधारित बिल्डों के लिए कोई आधिकारिक समर्थन नहीं है, अन्यथा कमांड लाइन पर स्वयं को बनाने के अलावा। ग्रहण/ग्रैडल परियोजना समर्थन अंततः पहुंच जाएगा। – CommonsWare

+0

धन्यवाद, इससे मुझे पहले से ही कम अक्षम महसूस होता है :-) – Chris

+0

हालांकि, सभी निष्पक्षता में, मुझे नहीं पता कि आपके उद्देश्य को पूरा करने का एक अनौपचारिक/असमर्थित तरीका है ... इसलिए मैं इन्हें टिप्पणियों के रूप में पोस्ट कर रहा हूं। :-) – CommonsWare

उत्तर

24

2 बिल्ड सिस्टम (ग्रहण + ग्रेड आधारित) का उपयोग करना संभव है। बस सुनिश्चित करें कि आउटपुट फ़ोल्डर्स अलग हैं (bin एडीटी के लिए, build ग्रेडल के लिए)। (टी एल के लिए अद्यतन, डॉ: जाँच Nodeclipse/Enide Gradle for Eclipse (marketplace))

File -> Export -> Generate Gradle build files बस नीचे दिए गए सामग्री के साथ build.gradle जोड़ना होगा (लेकिन संस्करणों की जाँच करें)। कोई मौजूदा फाइल नहीं बदली गई है।

com.android.tools.build:gradle संस्करण the latest होना चाहिए। http://tools.android.com/tech-docs/new-build-system/user-guide में कहा गया है कि gradle build के लिए ग्रेडल प्रकार के लिए। अधिक के लिए gradle tasks आज़माएं। (मेरे धीमे इंटरनेट कनेक्शन पर 1 घंटे लग गए! सभी आवश्यक निर्भरताओं को डाउनलोड करने के लिए ग्रेडल के लिए)

वोगेला ट्यूटोरियल http://www.vogella.com/articles/AndroidBuild/article.html अभी तक तैयार नहीं है। अन्य ऑनलाइन ट्यूटोरियल वास्तव में http://www.jayway.com/2013/02/26/using-gradle-for-building-android-applications/

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

नीचे build.gradle उदाहरण देखें। यदि आप पहले से ही धीरे-धीरे महारत हासिल कर चुके हैं, तो शायद विज़ार्ड की आवश्यकता नहीं है। क्लासिक एंड्रॉइड प्रोजेक्ट चेक gh.c/N/n-1/b/m/o.n.e.e.g/docs/android/build.gradle के लिए नवीनतम build.gradle टेम्पलेट के लिए।

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 
apply plugin: 'android' 

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 

android { 
    compileSdkVersion 8 
    buildToolsVersion "19.0.0" 

    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
     } 

     // Move the tests to tests/java, tests/res, etc... 
     instrumentTest.setRoot('tests') 

     // Move the build types to build-types/<type> 
     // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... 
     // This moves them out of them default location under src/<type>/... which would 
     // conflict with src/ being used by the main source set. 
     // Adding new build types or product flavors should be accompanied 
     // by a similar customization. 
     debug.setRoot('build-types/debug') 
     release.setRoot('build-types/release') 
    } 
} 

एडीटी-बंडल ग्रहण बाज़ार के साथ नहीं आता है, इसलिए अद्यतन साइट का उपयोग किया जा सकता है।Gradle Integration for Eclipse के लिए

अद्यतन p2 भंडार

http://dist.springsource.com/release/TOOLS/gradle

है लेकिन संस्करण के रूप में 3.4.0 यह .gradle फ़ाइलों के लिए संपादक प्रदान नहीं करता है। तो एंड्रॉइड विकास के लिए इसे रखने की कोई समझ नहीं है।

मैं डिफ़ॉल्ट एडीटी बिल्ड के साथ जाऊंगा, प्रयोगों के लिए द्वितीयक निर्माण के रूप में ग्रेडिंग और http://tools.android.com/tech-docs/new-build-system पर बग का प्रवाह दुर्लभ हो जाता है। (यही कारण है कि औपचारिक 1.0 संस्करण के आसपास होना चाहिए)

अद्यतन: 2014-04-15

Alex Ruiz's (from Android team) Blog about Android, Gradle & ADT

Android के Gradle मॉडल

इसके बजाय आईडीई विशेष एंड्रॉयड/Gradle मॉडल बनाने के

, हम एक ग्रैडल परियोजना का एक आईडीई-अज्ञेय प्रतिनिधित्व करने का फैसला किया। इस तरह, हमारे पास जानकारी का एक स्रोत है जो बनाए रखना आसान है। आईडीई एकीकरण प्रत्येक समर्थित आईडीई (हमारे मामले में, ग्रहण और आईडीईए) के लिए प्लग-इन के रूप में लागू किया जाएगा। इस दृष्टिकोण का मुख्य लाभ यह है कि हम आईडीई एकीकरण प्लग-इन से स्वतंत्र रूप से ग्रैडल प्लग-इन जारी कर सकते हैं। उदाहरण के लिए, हम एक्लिप्स प्लग-इन का एक नया संस्करण भेज सकते हैं जिसमें एंड्रॉइड के ग्रैडल पक्ष को प्रभावित किए बिना कई बग फिक्स हैं।

अप्रैल 2014 ग्रहण-Gradle प्लगइन के रूप में एंड्रॉयड-Gradle प्लगइन के साथ संगत नहीं है:

Android टीम (@arcone द्वारा उठाए गए)

परियोजना सदस्य # 2 द्वारा Issue 57668 में जवाब के रूप में एक्स ... @ android.com

ग्रहण प्लगइन एंड्रॉइड प्लगइन के साथ संगत नहीं है।

आप एक्लिप्स में डिफ़ॉल्ट ग्रैडल समर्थन का उपयोग करके ग्रहण में एक एंड्रॉइड ग्रेडल प्रोजेक्ट आयात करने में सक्षम नहीं होंगे।

यह ग्रहण में काम करने के लिये हम ग्रहण के लिए Gradle प्लगइन, उसी तरह हम इंटेलीजे में Gradle समर्थन संशोधित कर रहे हैं बदलने के लिए होगा

यही है एंड्रॉयड टीम इंटेलीजे के लिए Gradle प्लगइन पर काम कर रहा है और ग्रहण के लिए ग्रेबल प्लगइन भी अद्यतन किया जाना चाहिए।

संक्रमण समय को सुचारू बनाने के लिए effort at Nodeclipse है। और अभी भी प्रयोग या पूरी तरह से धीरे-धीरे उपयोग करते हुए ग्रहण में विकसित करना जारी रखें।

Nodeclipse/Enide Gradle for Eclipse (marketplace)

Gradle के लिए कुछ स्क्रीनशॉट ग्रहण के लिए:

+2

वाह, उत्तर अद्यतन करने के लिए धन्यवाद। इस बीच, हमारी टीम पूरी तरह से एंड्रॉइड स्टूडियो में माइग्रेट हो गई है और हम काफी खुश हैं। मुझे लगता है कि यह उत्तर एंड्रॉइड बिल्ड सिस्टम कंसुंड्रम में देख रहे किसी भी अन्य देवताओं के लिए बहुत उपयोगी होगा। एक बार फिर धन्यवाद! – Chris

+1

समय सबकुछ हल करता है, लेकिन कभी-कभी नए सॉफ्टवेयर में भागने से उम्मीद से अधिक समय खर्च किया जाएगा। अप्रैल 2014 तक नवीनीकरण आधारित नई बिल्ड सिस्टम 0.9 है और यह अंतिम 1.0 रिलीज में आ रहा है। अधिक व्यापक रूप से अपनाने का समय आ रहा है। –

+1

Google टीम ग्रहण में क्रमिक के साथ एंड्रॉइड ऐप्स बनाने के लिए समर्थन जोड़ने की पूरी तरह से उपेक्षा कर रही है। – Martin

1
  1. स्थापित Gradle:
    एक। http://gradle.org/gradle-download/ बी। पिछले रिलीज सेक्शन 2.1 से चुनें। सी। सुविधाजनक फ़ोल्डर पर अनजिप करें। (पूर्व: डी: \ ग्रैडल \ gradle-2.1) डी। सिस्टम पर्यावरण चर सेट करें। i। GRADLE_HOME डी के रूप में: \ Graddle \ gradle-2.1) ii। GRADLE_OPTS के रूप में -XX: MaxPermSize = 512m iii। पथ iv के लिए% GRADLE_HOME% \ bin। एंड्रॉइड_एचओएमई सेट करें (एक्स: डी: \ एंड्रॉइड-एसडीके) वी। पथ में "% एंड्रॉइड% \ प्लेटफार्म-टूल्स" संलग्न करें।

ई। ओपन कमांड प्रॉम्प्ट और जांच क्रमशः सेट है। जांचने के लिए gradle -version का उपयोग कर सकते हैं।

  1. ग्रैडल ग्रहण प्लगइन स्थापित करें: ए। ग्रहण बी लॉन्च करें। सहायता> ग्रहण बाजार स्थान सी। खोज "gradle" डी। उसमें "नोडेक्लिसे/एनइड" ई चुनें। सभी सूचीबद्ध का चयन करें, & इंस्टॉल करें स्वीकार करें। एफ। एक बार स्थापित ग्रहण पुनरारंभ करें।

  2. सेट ग्रैडल & जावा होम: ए। ग्रहण लॉन्च करें। बी। विंडो> वरीयताएँ> ग्रैडल एनइड सी। सेट नहीं होने पर इन्हें सेट करें: i। घर का उपयोग करने के लिए घर सेट है (पूर्व: डी: \ Graddle \ gradle-2.1) ii। उपयोग करने के लिए वैकल्पिक JAVA_HOME सेट है (पूर्व: सी: \ प्रोग्राम फ़ाइलें (x86) \ जावा \ jdk1.7.0_60) iii। GRADLE_OPTS के लिए JVM विकल्प "-XX: MaxPermSize = 512m"

  3. प्रोजेक्ट बनाएं: ए। ग्रहण जावा एक्सप्लोरर में एपीके का विस्तार करें। बी। Build.gradle सी पर राइट क्लिक करें। के रूप में चलाएं> ग्रैडल जीयूआई डी। कॉमांड लाइन: ग्रेड बिल्ड क्लीनर ई। निर्माण को पूरा करने के लिए प्रतीक्षा करें: पहली बार निर्माण में कई मिनट लगेंगे। एफ। यदि बिल्ड डीएक्स त्रुटि या जावा हीप स्पेस त्रुटि: i। संपादक में खोलें .gradle खोलें। ii। मल्टी डेक्स बिल्ड के लिए- अपने जावा के आधार पर उपयुक्त जावामैक्सहेप आकार सेट करें (32 बिट जावा के लिए जावामैक्सहेप आकार = 1024 एम, 64 बिट जावा के लिए 2048 एम) iii। हस्ताक्षर टिप्पणी कर सकते हैं (// से लागू: "$ rootProject.projectDir/jenkins_config/gradle/sign.gradle";) डीबग बिल्ड के लिए हस्ताक्षर से बचने के लिए। iv। इन सुधारों के बाद फिर से बनाएँ।

  4. डिवाइस पर बिल्ड स्थापित करें: ए। डिवाइस को एम/सी से कनेक्ट करें। बी। Build.gradle सी पर राइट क्लिक करें। के रूप में चलाएं> gradle installDebug Gradle Android प्रारंभ करें डी।

  5. डीबग बिल्ड: ए को पूरा करने के लिए इंस्टॉल करने की प्रतीक्षा करें। ऐप लॉन्च करें बी। डीबगर (डीडीएमएस> डिवाइस> ऐप) संलग्न करें। सी।हम चेक किए गए कुछ उपकरणों पर डीबग करने में सक्षम हैं।

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