2013-05-22 3 views
30

मैं वर्तमान में एंड्रॉइड प्रोजेक्ट बनाने के लिए चींटी का उपयोग कर रहा हूं लेकिन यह बड़ी परियोजनाओं के लिए इसे काट नहीं देता है और विभिन्न डिलीवरेबल बनाए रखने में दर्द होता जा रहा है।बकवास बनाम ग्रैडल, समर्थक और एंड्रॉइड बिल्ड सिस्टम के लिए विपक्ष

फेसबुक के बक (http://facebook.github.io/buck/) और ग्रैडल में दो विकल्प हैं जो Google एंड्रॉइड स्टूडियो (http://tools.android.com/tech-docs/new-build-system/user-guide) के साथ समर्थन कर रहा है।

उन्हें बाहर करने और उनके कवरेज पर पढ़ने के अलावा मैं आपको अपनी सिफारिशों के लिए ठीक स्टैक ओवरफ्लो लोगों से पूछना चाहता हूं। अधिमानतः यदि आपने कुछ समय के लिए टूल का उपयोग किया है, तो बक के लिए बोनस अंक के साथ, क्योंकि इसे इतना कवरेज नहीं मिला है।

महत्वपूर्ण बिंदु

  • निर्माण की गति, देव
  • एक ही कोड के आधार से कई डिलिवरेबल्स बनाता है विशेष रूप से के लिए कर रहे हैं
  • उपयोग में आसानी

मैं भी अन्य विकल्पों के लिए खुला रहा हूँ । आप क्या सुझाव देते हैं और क्यों?

+0

मुझे ग्रेडल पसंद है (हिरन नहीं पता)। धीरे-धीरे थोड़ा धीमा है, लेकिन आप चीजों को गतिशील डिमन (http://www.gradle.org/docs/current/userguide/gradle_daemon.html) –

उत्तर

7

दीर्घकालिक, नया ग्रैडल बिल्ड सिस्टम मानक होगा, और यह बहुत अच्छा लगता है। हालांकि, ऐसा लगता है कि यह अभी तक गैर-परीक्षण परियोजनाओं में उपयोग के लिए तैयार नहीं है। उदाहरण के लिए, ऐसा लगता है कि यह अभी तक apklib निर्भरताओं का समर्थन नहीं करता है।

यह समझ में आता है, और इस तथ्य में परिलक्षित होता है कि वर्तमान संस्करण 0.3 है, मैं इसे विकसित करने के लिए उत्सुक हूं।

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

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

+0

के साथ चीजों को गति दे सकते हैं। आपको ग्रेडल के तहत डीबग बिल्ड की बिल्डिंग गति कैसे मिली ? चींटी बहुत धीमी है और मुझे पता है कि बक बहुत तेज है। चूंकि आपने ग्रैडल का उपयोग किया है, तो आप कैसे कहेंगे कि –

+0

के विकास के दौरान डीबग बिल्ड बनाने के लिए गति है, मैंने वास्तव में ग्रेडल, मैवेन का उपयोग नहीं किया है। मैं इंटेलिजे का उपयोग कर रहा हूं, और सामान्य विकास/परीक्षण चक्र के दौरान आईडीई के निर्माण (जो बहुत तेज है) का उपयोग कर सकते हैं, और अभी भी अंतिम परीक्षण, सीआई, और रिलीज के लिए मेवेन बिल्ड (जो धीमा है) का उपयोग कर सकते हैं। – GreyBeardedGeek

34

जैसा कि मैंने Buck documentation में सामने और केंद्र रखा है: "बक एक एंड्रॉइड के लिए एक बिल्ड सिस्टम है जो कोड, संसाधनों सहित छोटे, पुन: प्रयोज्य मॉड्यूल के निर्माण को प्रोत्साहित करता है।"

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

हम भी गति के बारे में बहुत अधिक परवाह करते हैं, विशेष रूप से वृद्धिशील बिल्डों की गति। चूंकि बक की निर्भरता की एक मजबूत अवधारणा है, इसलिए हम अक्सर मध्यवर्ती कलाकृतियों के पुनर्निर्माण से बच सकते हैं। अन्य बिल्ड सिस्टम भी ऐसा करने की कोशिश करते हैं (चींटी की तरह), लेकिन परिणामस्वरूप, अक्सर शुद्धता का त्याग करते हैं। हम नहीं करते

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

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

+0

+1, प्लस बक का प्रयोग गेरिट – orip

+1

के लिए भी किया जाता है ध्यान दें कि बक अभी भी इस बात पर निर्भरता प्रबंधन नहीं लगता है कि जेएआरएस/एएआर को गतिशील रूप से मेवेन सेंट्रल/जेसीएन्टर से पुनर्प्राप्त किया जा सकता है और निर्माण के लिए स्थानीय रूप से कैश किया जा सकता है। मेरा मानना ​​है कि [गेरिट लोगों के पास कुछ सरल कस्टम कोड है] (https://groups.google.com/d/msg/repo-discuss/Ab4y-D8lcWI/f2YLOPICFr8J) जो कम से कम JAR डाउनलोड करता है, लेकिन उन्हें कैश नहीं करता है। – sschuberth

+1

बक के पास [fetch कमांड] (https://buckbuild.com/command/fetch.html) है जो यह कर सकता है, @sschuberth – sdwilsh

2

मैं बक के निम्न लाभ जोड़ना होगा:

  • Exopackage, अर्थात वृद्धिशील apk निर्माण; बस उस पृष्ठ पर बिल्ड समय के साथ तालिका की जांच करें
  • Network cache। यदि आपके पास ऐप के साथ काम करने वाले कई डेवलपर हैं, तो आपको उन घटकों को पुनर्निर्माण करने की आवश्यकता नहीं होगी जो पहले से ही अन्य डेवलपर्स द्वारा बनाए गए हैं।
+0

वाइन ने एक्सपॉकेज के कारण कुछ अच्छी जीत भी देखी: http://engineering.vine.co/पोस्ट/117873038742/कम करने-निर्माण बार-दर-गोद लेने-हिरन – sdwilsh

5

यहाँ एक Gradle प्लगइन OkBuck जो आप अपने वर्तमान एंड्रॉयड स्टूडियो + Gradle पर बक आधार का उपयोग कर विन्यास का केवल लाइनों के साथ प्रणाली का निर्माण शुरू करते हैं कर सकते हैं। इसकी जांच - पड़ताल करें।

ओकबक आपको धीरे-धीरे और हिरन के सभी फायदों के साथ, अपनी परियोजना को धीरे-धीरे और हिरण के साथ बनाने की अनुमति दे सकता है।

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