6

में कोड साझाकरण मैंने एक प्रोजेक्ट पर काम करना शुरू कर दिया है जहां मुझे ऐप्स के समूह में Java कक्षाओं का एक समूह साझा करने की आवश्यकता होगी। Eclipse में ऐसी सभी कक्षाओं के साथ एक प्रोजेक्ट बनाना संभव था और इसे अपनी सभी निर्भर परियोजनाओं के साथ वर्कस्पेस में लाइब्रेरी के रूप में उपयोग करना संभव था, लेकिन Android Studio में ऐसा करना प्रतीत नहीं होता है (कम से कम आसानी से नहीं)।एंड्रॉइड स्टूडियो

मैं पदों का एक समूह पढ़ रहा हूं और उनमें से बहुत से लाइब्रेरी प्रोजेक्ट की स्थापना करने का सुझाव देते हैं, aar फ़ाइल उत्पन्न करते हैं और फिर मेरी परियोजनाओं में इसका उपयोग करते हैं। लेकिन, जैसा कि मैं इसे समझता हूं, यह मेरी लाइब्रेरी ओपन-सोर्स (क्या मैं सही हूँ?) बनाउंगा, जो मैं नहीं चाहता हूं। मैं इसे क्लाइंट के लिए कर रहा हूं और मैं कोड बेस को निजी रखना चाहता हूं।

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

क्या मैं जो खोज रहा हूं उसे प्राप्त करने का कोई अच्छा तरीका है? किसी भी मदद की सराहना की है।

+0

मैंने ग्रहण के साथ क्या संभव था, इस बारे में एक और सटीक स्पष्टीकरण के साथ प्रश्न संपादित किया है। –

+0

@ग्रीपैप्स, आपकी टिप्पणी रचनात्मक नहीं है। Google आपका प्रश्न पहले, और यदि किसी अजीब कारण के लिए, आपको लाइब्रेरी प्रोजेक्ट्स पर कुछ भी नहीं मिल रहा है, तो यहां वापस आएं और एक प्रश्न पूछें। – 323go

+2

एक एएआर उत्पन्न करना आपके कोड का खुलासा नहीं करेगा। [इसके बारे में मेरा स्वयं का प्रश्न] जांचें (http://stackoverflow.com/questions/26531709/create-android-library-aar-including-javadoc-and-sources) – jmm

उत्तर

7

आपके पास कुछ अलग-अलग विकल्प हैं।

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

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

इस दृष्टिकोण का नुकसान यह है कि यह उन पुस्तकालयों में परिवर्तन करने के लिए थोड़ा कठिन बनाता है: आपको परियोजना को लोड करने, परिवर्तन करने, संग्रह बनाने और संग्रह वितरित करने की आवश्यकता है।

दूसरा दृष्टिकोण लाइब्रेरी को स्रोत मॉड्यूल के रूप में रखना है जैसा कि आपने एक्लिप्स में किया था। आपने देखा है कि यदि आप इसे यूआई के माध्यम से आयात करते हैं तो एंड्रॉइड स्टूडियो मॉड्यूल की प्रति बना देगा, लेकिन यदि आप यूआई को बाईपास करते हैं और बिल्ड स्क्रिप्ट को सीधे संशोधित करते हैं, तो आप जो भी चाहते हैं वह कर सकते हैं, जो मॉड्यूल इन-प्लेस और शेयर का उपयोग करना है कई परियोजनाओं के बीच एक प्रतिलिपि। अपने settings.gradle फ़ाइल में इस, काम करते हैं और इस जोड़ने के लिए:

include ':module_name' 
project(':module_name').projectDir = new File(settingsDir, '../relative/path/to/module') 

मैं दृढ़ता से यहां एक शुद्ध रिश्तेदार पथ का उपयोग नहीं करने के लिए प्रोत्साहित करते हैं; इस उदाहरण में, पथ को settingsDir ग्रेडल द्वारा प्रदान किए गए चर के लिए लगाया गया है, जिसे निर्देशिका कहा जाता है जहां सेटिंग्स .gradle पाया जाता है। यदि आप शुद्ध रिश्तेदार पथ का उपयोग करते हैं (यानी किसी भी चीज़ के लिए एंकर नहीं किया गया है), तो आप उन सभी वातावरणों में काम करने वाली निर्देशिका पर निर्भर हैं जहां बिल्ड फ़ाइल चलती है (कमांड लाइन बनाम एंड्रॉइड स्टूडियो बनाम सीआई सर्वर), जो मानने के लिए एक अच्छी बात नहीं है।

+0

बहुत बहुत धन्यवाद स्कॉट! मैंने आपके पहले सुझाव की खोज की और समाधान को प्राप्त करने के तरीके पर इस उपयोगी पोस्ट को ढूंढना समाप्त कर दिया। http://b2cloud.com.au/tutorial/using-local-android-library-packages-aar/। –

+0

@ स्कॉट बार्टा, क्या आप सेटिंग्स का उपयोग क्यों कर सकते हैं एक एंकर के रूप में डीआईआर शुद्ध रिश्तेदार पथ का उपयोग करने से बेहतर है? जिस तरह से मैं इसे देखता हूं - लाइब्रेरी मॉड्यूल हमेशा ऐप प्रोजेक्ट की सेटिंग्स के सापेक्ष एक निश्चित पथ में होना चाहिए। अगर आप सीएलआई/एएस/सीआई में हैं या नहीं। तो क्या आप एक लंगर रिश्तेदार पथ या शुद्ध पर उपयोग करते हैं इससे कोई फर्क नहीं पड़ता। मुझे यहां क्या समझ नहीं आ रहा है? – curioustechizen

+2

@curioustechizen पथ निर्देशिका .gradle वाली निर्देशिका से संबंधित नहीं है, यह निर्माण स्क्रिप्ट निष्पादित होने पर कार्यशील निर्देशिका के सापेक्ष है। उत्तरार्द्ध इस बात पर निर्भर करता है कि यदि आप कमांड लाइन से निर्माण करते हैं, या आईडीई की सनकी अगर आप एंड्रॉइड स्टूडियो से निष्पादित करते हैं तो कमांड को निष्पादित करते हैं। इसे स्पष्ट करना बेहतर है। –

2

आपको ग्रहण परियोजनाओं में एंड्रॉइड स्टूडियो/इंटेलिजे आइडिया मॉड्यूल के रूप में सोचने की आवश्यकता है। फिर, आप एंड्रॉइड (या जावा) पुस्तकालय उत्पन्न कर सकते हैं और फिर उन्हें अपनी परियोजना में शामिल कर सकते हैं।

एक पुस्तकालय के रूप में एक Android स्टूडियो मॉड्यूल चिह्नित करने के लिए आप फ़ाइल पर जा सकते हैं ->परियोजना संरचना ->पहलुओं और वहाँ लाइब्रेरी मॉड्यूल पर क्लिक करें

enter image description here

+0

वास्तव में पढ़ना चाहिए। उन्हें समझने की महत्वपूर्ण बात यह है कि एक एंड्रॉइड स्टूडियो प्रोजेक्ट ग्रहण कार्यक्षेत्र के समान है। –

0

आप कर सकते हैं निश्चित रूप से इसे ओपन सोर्स या दूसरों के लिए उपलब्ध किए बिना लाइब्रेरी बनाएं और उपयोग करें।

सबसे पहले, आपको इसे तब तक बनाने की आवश्यकता नहीं है जब तक इसमें संसाधन न हो। यदि यह केवल सादे वर्ग है, तो आप इसे केवल .jar फ़ाइल बना सकते हैं।

किसी भी तरह से, इन पुस्तकालयों (या तो याार) को साझा करने का सबसे आसान तरीका है अपनी खुद की भंडार स्थापित करना। नेक्सस और आर्टिफैक्टरी दो सबसे आम भंडार प्रबंधक हैं।

आप लाइब्रेरी को अपने प्रोजेक्ट में रखते हैं, और फिर इसे अपने, इन-हाउस रिपोजिटरी में प्रकाशित करते हैं।

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

0

मैं आपके जैसी स्थिति में था, और मैंने गिट का उपयोग करके एक दृष्टिकोण की स्थापना की। लाइब्रेरी रखने के लिए कदम:

  1. एंड्रॉइड स्टूडियो में प्रोजेक्ट बनाएं।
  2. उस प्रोजेक्ट में एंड्रॉइड लाइब्रेरी मॉड्यूल बनाएं।
  3. उस लाइब्रेरी मॉड्यूल में गिट रिपॉजिटरी बनाएं।
  4. .gitignore फ़ाइल
  5. निजी क्लाउड रिपोजिटरी के लिए गिटहब या बिटबकेट का उपयोग करें। और अपनी लाइब्रेरी को धक्का दें।
  6. किसी भी प्रोजेक्ट में नया एंड्रॉइड लाइब्रेरी मॉडल बनाएं जो आप चाहते हैं।
  7. एंड्रॉइड स्टूडियो बंद करें (सुनिश्चित नहीं है कि अनिवार्य है)।
  8. एक्सप्लोरर का उपयोग करके आपके बनाए गए मॉड्यूल फ़ोल्डर पर जाएं।
  9. modulename.iml को छोड़कर, इसमें सभी डेटा हटाएं।
  10. अपनी लाइब्रेरी को "गिटहब" से क्लोन करें।

यह सब कुछ है।

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

लाभ यह है कि आपको कोई जार या आरा बनाने की आवश्यकता नहीं है।

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