2015-02-06 3 views
23

पर एंड्रॉइड लाइब्रेरी कैसे प्रकाशित करें मेरे पास ग्रैडल और एंड्रॉइड स्टूडियो का उपयोग करके लाइब्रेरी और एंड्रॉइड ऐप है। मैं के रूप मेंग्रैडल: स्थानीय रिपॉजिटरी

compile project(':library') 

निम्नलिखित क्योंकि मैं पुस्तकालय स्रोत कोड के साथ जाल नहीं करना चाहती परियोजना में सीधे पुस्तकालय शामिल कर सकते हैं, मैं स्थानीय भंडार में पुस्तकालय प्रकाशित करने के लिए इतना है कि मैं

के रूप में उपयोग कर सकते हैं चाहता हूँ
compile 'com.mygroup:library:1.0' 

कोई सलाह?

उत्तर

39

पर मैं सिर्फ एक समाधान नहीं मिला। लाइब्रेरी प्रोजेक्ट के build.gradle में, अधिक जानकारी

+2

'से कॉल करने की [अपने स्थानीय Maven पथ यहाँ]' '~/.m2' फ़ोल्डर की तरह है? – zygimantus

+3

भंडार (यूआरएल: mavenLocal()।getUrl()) – abg

5

अपने Gradle उपयोग

repositories { 
    mavenLocal() 
} 

पर अपने स्थानीय Maven भंडार पर डी पुस्तकालय प्रकाशित करें और फिर आप सूचीबद्ध अन्य खजाने है, तो सुनिश्चित करें कि आपके mavenLocal पहले प्रकट होता है बनाते हैं।

डॉक्स: खंड 51.6.4 https://gradle.org/docs/current/userguide/dependency_management.html

0

के लिए प्रोजेक्ट फ़ोल्डर, प्रकार में इस

apply plugin: 'maven' 

group = 'com.mygroup' 
version = '1.0' 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "file://[your local maven path here]") 
     } 
    } 
} 

जोड़ने settings.gradle में आदेश

gradle uploadArchives 

पढ़ें Publishing artifacts निम्नलिखित जोड़ें

include 'riz.com.mylibrary' 
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary') 

फिर build.gradle पर निर्भर cies

compile project(':riz.com.mylibrary') 
+1

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

25

जोड़ने एक Android लाइब्रेरी के लिए आप एंड्रॉयड Gradle-Maven प्लगइन https://github.com/dcendents/android-maven-gradle-plugin उपयोग करना चाहिए: अपने स्थानीय भंडार रन पर प्रकाशित करने की

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' 
    } 
} 

apply plugin: 'com.android.library' 
apply plugin: 'com.github.dcendents.android-maven' 

तब:

./gradlew install 

स्थापित हो जाएगा जो यह $ HOME/.m2/भंडार में है। अपने ऐप या अन्य प्रोजेक्ट में आप इसे अपने रिपॉजिटरीज़ में mavenLocal() जोड़कर शामिल कर सकते हैं।

वैकल्पिक रूप से, यदि आपकी लाइब्रेरी गिटहब पर है तो आप इसे JitPack का उपयोग करके अन्य परियोजनाओं में शामिल कर सकते हैं। फिर आपको उपर्युक्त आदेश चलाने की आवश्यकता नहीं है और केवल जो भी धक्का दिया गया है उसका उपयोग कर सकते हैं।

+0

इसे सही उत्तर के रूप में क्रेडिट प्राप्त करना चाहिए। –

+3

मुझे लगता है कि किसी को lib में 'group =' com.example ' संस्करण =' 1.0'' 'की भी आवश्यकता है। – WindRider

4

मैं जावा स्रोतों और जावडोक को मैवेन रिपोजिटरी में जोड़ना पसंद करता हूं। निम्न स्क्रिप्ट android maven plugin का उपयोग कर एक एंड्रॉइड लाइब्रेरी को एक मैवेन रिपोजिटरी में प्रकाशित करती है। यह .aar, javadoc.jar, sources.jar और .pom बनाता है और maven-metadata.xml को मैवेन रिपोजिटरी में फ़ाइलों को अपलोड करने के बाद अद्यतन करता है। मैंने स्क्रिप्ट को GitHub पर भी रखा है।

apply plugin: 'com.android.library' 
apply plugin: 'maven' 

//Your android configuration 
android { 
    //... 
} 

//maven repository info 
group = 'com.example' 
version = '1.0.0' 

ext { 
    //Specify your maven repository url here 
    repositoryUrl = 'ftp://your.maven.repository.com/maven2' 
    //Or you can use 'file:\\\\C:\\Temp' or 'maven-temp' for a local maven repository 
} 

//Upload android library to maven with javadoc and android sources 
configurations { 
    deployerJars 
} 

//If you want to deploy to an ftp server 
dependencies { 
    deployerJars "org.apache.maven.wagon:wagon-ftp:2.2" 
} 

// custom tasks for creating source/javadoc jars 
task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
    destinationDir = file("../javadoc/") 
    failOnError false 
} 

task javadocJar(type: Jar, dependsOn: javadoc) { 
    classifier = 'javadoc' 
    from javadoc.destinationDir 
} 

//Creating sources with comments 
task androidSourcesJar(type: Jar) { 
    classifier = 'sources' 
    from android.sourceSets.main.java.srcDirs 
} 

//Put the androidSources and javadoc to the artifacts 
artifacts { 
    archives androidSourcesJar 
    archives javadocJar 
} 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      configuration = configurations.deployerJars 
      repository(url: repositoryUrl) { 
       //if your repository needs authentication 
       authentication(userName: "username", password: "password") 
      } 
     } 
    } 
} 

./gradlew uploadArchives 
संबंधित मुद्दे