2017-03-09 8 views
8

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

+0

क्या आप अपनी वर्तमान कॉन्फ़िगरेशन फाइल पोस्ट कर सकते हैं? – Adonis

+0

क्यों आप comp.android.support को संकलित नहीं कर सकते: कार्डव्यू-वी 7: 25.2.0'' या तो जार या आर का उपयोग किए बिना? –

उत्तर

0

android-fat-aar आपके लिए इस समस्या को संभालना चाहिए।

आप GitHub रिपोजिटरी से

apply from: 'fat-aar.gradle' 

करने के लिए है और फिर एक एम्बेडेड निर्भरता के साथ अपने संकलन निर्भरता की जगह। तो बजाय

dependencies { 
    compile project(':otherModule') 
} 

के रूप में एक मॉड्यूल otherModule निर्भरता definining की आप केवल, के रूप में

dependencies { 
    embedded project(':otherModule') 
} 

इसे परिभाषित करने की संकलन विन्यास एम्बेडेड विन्यास पर निर्भर करता है होगा ताकि आप होगा पहले की तरह स्थानीय रूप से वही व्यवहार।

लेकिन अंत में यह एक समस्याग्रस्त विन्यास है, खासकर यदि आप कुछ एंड्रॉइड समर्थन पुस्तकालयों का उपयोग करना चाहते हैं। आप सबसे अधिक संभावना डुप्लिकेशंस मुद्दों में भाग लेंगे।

आप ऑफ़लाइन काम के लिए इस स्थापना बना रहे हैं तो बेहतर पुस्तकालय कलाकृतियों आप उपयोग करने की आवश्यकता की एक प्रति के साथ एक Local Maven repository

repositories { 
    mavenLocal() 
} 

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

0

क्या आप जानते हैं कि आप पुस्तकालय के रूप में एक मॉड्यूल का उपयोग कर सकते हैं (स्रोत, कोई एएआर संकलित नहीं)? इसका मतलब यह होगा कि आपकी लाइब्रेरी-प्रोजेक्ट सभी ग्रेडल निर्भरताओं का उपयोग कर सकती है। यहां 'माइएपी लाइब्रेरी' नामक लाइब्रेरी प्रोजेक्ट के साथ एक उदाहरण दिया गया है जो 'एपीआई'

पहले एक स्टैंडअलोन मॉड्यूल होगा, इस उदाहरण के लिए अपनी नई लाइब्रेरी को मॉड्यूल नाम 'एपीआई' के साथ बनाएं, लेकिन नाम कर सकता है जो कुछ भी आपको पसंद हो)। कि पुस्तकालय मॉड्यूल के लिए Gradle फ़ाइल में जहां आम तौर पर आवेदन प्लगइन

apply plugin: 'com.android.library' //not apply plugin: 'com.android.application' 

का प्रयोग करेंगे यह भी सुनिश्चित करें पुस्तकालय मॉड्यूल अपने Gradle फ़ाइल के defaultConfig में एक applicationId घोषणा नहीं करता है बनाने के पुस्तकालय प्लगइन का उपयोग। फिर सामान्य रूप से सभी लाइब्रेरी निर्भरताओं की घोषणा करें।

फिर आपकी उपभोग करने वाली परियोजना में सेटिंग्स में निम्नलिखित शामिल करके लाइब्रेरी आयात करें।Gradle:

//this first line declares a pseudonym to refer to the library module 
include ':api' 
//this second line explains where the pseudonym links to 
//(the path to the module directory of the library project, relative to the root dir of the current project) 
project(':api').projectDir = new File('../MyApiLibrary/api/') 

अपने उपभोक्ता मॉड्यूल के Gradle फ़ाइल में, इस परियोजना को संदर्भित एक निर्भरता के रूप में:

dependencies { 
    ... 
    compile project(':api') 
} 

अब सब कुछ अंदर अपने मुख्य परियोजना और पुस्तकालय परियोजना की कक्षाओं के सभी आयातित निर्भरता का उपयोग कर सकते

0

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

- मैवेन इंस्टॉल करें। - अपने मॉड्यूल में ग्रेडल मेवेन प्लगइन (https://github.com/dcendents/android-maven-gradle-plugin) लागू करें। मॉड्यूल को एकल पुस्तकालयों के रूप में स्थापित करने के लिए इंस्टॉल कार्य का उपयोग करें।

- एक नया मॉड्यूल बनाएं, जो आपके एकल पुस्तकालयों और उनकी निर्भरताओं के सभी स्थापित संस्करणों को आयात करता है। इस मॉड्यूल में एंड्रॉइड छाया प्लगइन (https://github.com/zawn/android-shade-plugin, यहां प्रलेखन: http://imperceptiblethoughts.com/shadow/) लागू करें। इसका उत्पादन एक उबेर-एर होगा, और आपके पुस्तकालय मॉड्यूल और उनकी निर्भरता वाले एआर होंगे। आप इसे अपने स्थानीय मैवेन इंस्टेंस में इंस्टॉल कर सकते हैं, या अपने ऐप्स में एआरएस को libs निर्देशिका में छोड़ सकते हैं।

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