2015-09-29 7 views
11

मैंने हाल ही में एक्लिप्स से एंड्रॉइड स्टूडियो पर स्विच किया है, और यह अधिकांश भाग के लिए बेहतर है।एंड्रॉइड स्टूडियो स्थानीय पुस्तकालय प्रकाशित

लेकिन अब मैं पुस्तकालयों को बाद में पुन: उपयोग करने के लिए तैयार करने के बिंदु पर हूं। मैं मॉड्यूल के बारे में जानता हूं, लेकिन उनका उपयोग नहीं करना चाहता, क्योंकि ऐसा लगता है कि प्रत्येक प्रोजेक्ट में एक डुप्लिकेट कॉपी करना है (मैं ग्रहण के रूप में एक lib के संदर्भ में होगा)।

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

इन साइटों (link और link) को वैश्विक स्तर पर पुस्तकालयों को प्रकाशित करने के लिए बिंट्रे या सोनाटाइप खाते की आवश्यकता होती है। लाइब्रेरी को प्रकाशित करना मेरे लिए एक अंतिम लक्ष्य है, इसलिए यदि संभव हो तो मैं उस विकल्प को खोलना चाहूंगा, लेकिन अभी के लिए मैं सिर्फ अपनी libs निजी होना चाहता हूं।

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

तो मेरा सवाल यह है: क्या एंड्रॉइड स्टूडियो में लाइब्रेरी निर्यात करने के लिए एक अनुशंसित "सरल" तरीका है, जिसे मैं ग्रैडल के माध्यम से संदर्भित कर सकता हूं?

बोनस मार्क्स: क्या मैं प्रकाशित होने के बाद प्रोजेवार्ड के साथ पुस्तकालयों को खराब कर पाऊंगा? वर्तमान में minifyEnabled=true को मेरे lib परिणामों पर .aar फ़ाइल बनाते समय उत्पन्न नहीं किया जा रहा है।

+0

आपको "कार्य के लिए निष्पादन विफल" मिला: ऐप: compileReleaseJavaWithJavac ' > tools.jar "नहीं मिला। – Shine

उत्तर

11

आप अपने कलाकृतियों को किसी भी भंडार में प्रकाशित करने के लिए maven-publish प्लगइन का उपयोग कर सकते हैं। I am using it combined with Amazon S3। भंडार आपका स्थानीय मैवेन रेपो (एमएम 2 निर्देशिका), स्थानीय आर्टिफैक्टरी, आर्किवा या किसी अन्य मेवेन रिपोजिटरी सर्वर या होस्टेड समाधान हो सकता है। एस 3 अच्छी तरह से काम करता है और मुझे यकीन है कि वहाँ आर्टिफैक्टरीज इत्यादि होस्ट किए गए हैं।

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

apply plugin: 'maven' 
apply plugin: 'java' 
apply plugin: 'maven-publish' 

repositories { 
    maven { 
     name "s3Repo" 
     url "your S3 URL" 
     credentials(AwsCredentials) { 
      accessKey awsAccessKey 
      secretKey awsSecretKey 
     } 
    } 
    maven { 
     ... any other repo here 
    } 
} 

publishing { 
    publications { 
     maven(MavenPublication) { 
      artifactId 'artifact that you want' 
      from components.java 
      artifact distZip { 
       ... example artifact created from zip distribution 
      } 
     } 
    } 
    repositories { 
     add "s3Repo" 
    } 
} 

प्रकाशन -> खजाने -> जोड़ने जगह है जहाँ आप सभी रेपोस जहाँ आप अपने अभिलेखागार अपलोड करना चाहते हैं निर्दिष्ट है।

आप अपने स्थानीय Maven से पुस्तकालय का उपयोग करना चाहते हैं, तो बस जोड़ें:

repositories { 
... 
    mavenLocal() 
... 
} 

और फिर समूह आईडी, विरूपण साक्ष्य आईडी और संस्करण के साथ किसी अन्य निर्भरता के रूप में अपने lib को देखें।


जहाँ तक मुझे पता है, समझ से परे पुस्तकालयों के रूप में ही कर रहे हैं गैर समझ से परे है, बस पहचानकर्ता के बदले नामों के साथ। यदि आवश्यकता एक obfuscated पुस्तकालय प्रकाशित करने के लिए है, तो यह ठीक होना चाहिए। बस एपीआई इंटरफेस और कक्षाओं (प्रवेश बिंदु) obfuscate मत करो। यदि आप गैर-obfuscated लाइब्रेरी प्रकाशित करते हैं, तो मुझे यकीन नहीं है कि यह अंतिम संग्रह में obfuscated हो जाता है।

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