2013-05-27 3 views
5

गूगल के instructions for using the Play Service API (उदाहरण के लिए) कहते हैं:Google आपके पेड़ में पुस्तकालयों की प्रतिलिपि बनाने की अनुशंसा क्यों करता है?

कॉपी/अतिरिक्त/गूगल/google_play_services/libproject/google-प्ले-services_lib पुस्तकालय स्रोत पेड़ जहां आप अपने Android ऐप्लिकेशन परियोजनाओं को बनाए रखने में परियोजना।

नोट: आपको उस लाइब्रेरी की प्रतिलिपि का संदर्भ देना चाहिए जिसे आपने अपने स्रोत पेड़ पर कॉपी किया है- आपको एंड्रॉइड एसडीके निर्देशिका से लाइब्रेरी का संदर्भ नहीं देना चाहिए।

यह मेरे लिए बदसूरत लगता है - क्यों इसे एसडीके निर्देशिका से संदर्भित नहीं करते? क्या इसके लिए कोई तकनीकी कारण है? या ऐसा है कि जब आप इसे अपग्रेड कर लेते हैं तो आपके पास स्पष्ट नियंत्रण होता है?

उत्तर

4

मैं यह इंगित करना चाहता हूं कि यह पूरी तरह से ग्रहण की सीमा है, और यह वास्तव में बदसूरत है।

समस्या यह है कि इस पुस्तकालय स्रोत कोड के अलावा संसाधनों होता है। ग्रहण केवल जार फ़ाइलों, जो एंड्रॉयड विकास के प्रयोजनों के लिए, संसाधनों को शामिल नहीं कर सकते हैं के रूप में पैक पुस्तकालयों के साथ सौदा कर सकते हैं।

तो, लाइब्रेरी के संसाधन को एप्लिकेशन में संकलित करने के लिए, संसाधनों के साथ लाइब्रेरी का स्रोत कोड, आपके प्रोजेक्ट में जोड़ा जाना चाहिए।

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

नया ग्रैडल-आधारित बिल्ड सिस्टम मेवेन प्राइमेटिव्स पर बनाया गया है, लेकिन इसके लिए 'aar' का एक अलग प्रारूप उपयोग करता है। उम्मीद है कि यह अंततः एपीक्लिब का भी समर्थन करेगा ताकि मैवेन बिल्ड और ग्रैडल बिल्ड इंटर-ऑपरेट कर सकें।

मैं कुछ एपीकेलिब्स के उपयोग सहित एक एंड्रॉइड एप्लिकेशन को मैवेन बिल्ड में परिवर्तित करने के अभ्यास के माध्यम से चला गया। मैं आपको बता सकता हूं कि m2eclipse प्लगइन के साथ ग्रहण apklibs को ठीक से संभाल नहीं करता है। इंटेलिजे और नया Google एंड्रॉइड स्टूडियो (इंटेलिजे पर आधारित) दोनों बिना किसी समस्या के एपीकेलिब्स को संभालते हैं।

0

यह बारे में नहीं है "सेवाएं लाइब्रेरी प्ले" विशेष रूप से। परियोजना के किसी अन्य पुस्तकालय की तरह ही, इस पुस्तकालय को परियोजना के स्रोत पेड़ से संदर्भित किया जाना चाहिए।

इस मामले में बाहरी पुस्तकालय एंड्रॉइड एसडीके निर्देशिका में है और वहां से संदर्भित करना भी एक अच्छा अभ्यास नहीं है। तो हाँ, इसे "तकनीकी कारण" कहा जा सकता है।

प्रयुक्त पुस्तकालय (इस मामले में प्ले सेवा लाइब्रेरी) को परियोजना के स्रोत पेड़ के अलावा कहीं भी संदर्भित नहीं किया जाना चाहिए।

+0

क्या तकनीकी कारण _is_ है? आपको क्यों लगता है कि यह एक अच्छा अभ्यास नहीं है या यह नहीं किया जाना चाहिए? – poolie

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

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