2015-11-13 21 views
8

में अमरूद लाइब्रेरी के कुछ ** भागों को आयात करने के लिए कैसे करें किसी भी एंड्रॉइड डेवलपर को पता होना चाहिए कि आपके एपीके के लिए 65k विधि सीमा है (क्योंकि वीएम में विधि प्रबंधन के लिए केवल 16 बिट हैं)। अपने आप तक पहुंचना मुश्किल हो सकता है, लेकिन जैसे ही आप कुछ पुस्तकालयों को जोड़ना शुरू करते हैं, यह आसान है।एंड्रॉइड ऐप (ग्रेडल)

पिछले साल से आप एंड्रॉइड 5.0 और ऊपर (और पूर्व एंड्रॉइड संस्करणों के लिए एक समर्थन लाइब्रेरी जोड़कर) पर मल्टीडेक्स सक्षम करके इसे से छुटकारा पा सकते हैं। यहां तक ​​कि जब भी यह संभव हो, विधियों की संख्या को कम करने और छोटे एपीआई प्राप्त करने के लिए हमेशा बेहतर होता है (और प्रदर्शन बेहतर होना चाहिए, है ना?)।

निश्चित बिंदु पर एंड्रॉयड लोग पहुंच से बाहर था (20k विधि) उनके लिए Google Play सेवाएं पुस्तकालय के आकार का एहसास हुआ और इसलिए आप बस भागों आप की जरूरत जोड़ सकते हैं वे, के महान निर्णय विभिन्न मॉड्यूल में इसे विभाजित लिया जैसे (ग्रेड के साथ):

compile ('com.google.android.gms:play-services-analytics:8.1.0') 
compile('com.google.android.gms:play-services-appindexing:8.1.0') 

क्या आप जानते हैं कि अगर यह अमरूद पुस्तकालय के साथ की तरह कुछ करने के लिए संभव है? यह लगभग 15 के तरीके है, इसलिए यह वास्तव में सहायक होगा। मैं गुवा के सिर्फ एक छोटे से हिस्से का उपयोग करना चाहता हूं, इसलिए मुझे दूसरे को शामिल करने की आवश्यकता नहीं है। मैं प्रलेखन और googling में देख रहा हूँ, लेकिन कुछ भी नहीं मिला।

compile group: 'com.google.guava', name: 'guava', version: '18.0' 

कुछ पुरुष ऐसी ही कुछ पूछा दो साल पहले, शायद एक जावा परियोजना के लिए है, लेकिन फिर छोटे अमरूद भागों मौजूद नहीं था। Downloading part of guava-libraries

एकमात्र चीज जो मेरे दिमाग में आती है वह पुस्तकालय लोड करने की बजाय आवश्यक गुवा कक्षाओं की प्रतिलिपि बनाना है, लेकिन मुझे लगता है कि यह एक भयानक समाधान है।

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

संपादित: इसके अलावा, multidex कार्य बहुत समय लगता है (एक मिनट और एक आधा जब से पहले कम से कम 15 सेकंड था), इसलिए हर बार मुझे लगता है मैं इंतजार करना एप्लिकेशन लॉन्च करना चाहते हैं। इसलिए, प्रोजेवार्ड का उपयोग करते समय भी उत्पादन रिलीज के लिए एक अच्छा समाधान है, यह विकास के लिए उपयुक्त नहीं है क्योंकि यह मल्टीडेक्सिंग से अधिक समय लेता है।

+5

गुवा डेवलपर्स इस मुद्दे से अवगत हैं और [प्रोगार्ड का उपयोग करके एक मेवेन समाधान प्रदान किया है] (https://github.com/google/guava/wiki/UsingProGuardWithGuava)। मैं नहीं जानता कि इसे ग्रैडल के साथ एकीकृत कैसे करें। –

+0

दुर्भाग्य से अमरूद अभी तक मॉड्यूलर नहीं है। हम क्या करते हैं कि हमारे पास दो बिल्ड स्वाद हैं: मल्टीडेक्स का उपयोग कर एक देव; प्रोगार्ड का उपयोग कर एक रिलीज। – rds

उत्तर

1

improve Guava on Android पर चल रहा कार्य है, लेकिन no plans to split it into smaller modules हैं। जैसा कि बताया गया है, ProGuard आपको गुवा के उन हिस्सों को बाहर करने देता है जिन्हें आप अपने अंतिम निर्माण से उपयोग नहीं करते हैं।

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