android - मेरे gradle निर्माण में स्थानीय.aar फ़ाइलों को जोड़ना




maven android-studio (4)

तो मैंने एक एंड्रॉइड-लाइब्रेरी बनाई है और इसे एक .aar फ़ाइल में सफलतापूर्वक संकलित किया है, जिसे मैंने यह एआर फ़ाइल कहा है: "projectx-sdk-1.0.0.aar" अब मैं चाहता हूं कि मेरी नई परियोजना इस आर्म पर निर्भर करे, तो मैंने जो किया है इस पोस्ट का पालन करें: http://life.nimbco.us/referencing-local-aar-files-with-android-studios-new-gradle-based-build-system/

लेकिन पोस्ट मुझे भ्रमित करता है क्योंकि मुझे वांछित परिणाम नहीं मिलते हैं:

com.projectx.photosdk का पैकेज नाम है: com.projectx.photosdk और अंदर मॉड्यूल को sdk कहा जाता है

यहां मेरी वर्तमान परियोजना संरचना है:

|-SuperAwesomeApp
|--.idea
|--gradle
|--App
|---aars
|----projectx-sdk-1.0.0.aar
|---build
|---jars
|---src
|---build.gradle

और वह मेरी ग्रेडल बिल्ड फ़ाइल है:

apply plugin: 'android'

buildscript {
    repositories {
        mavenCentral()
        flatDir {
            dirs 'aars'
        }
    }
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'


    compile 'com.projectx.photosdk:sdk:[email protected]'
//    compile files( 'aars/sdk-1.0.0.aar' ) // Does not work either
}

// संपादित करें

मुझे जो त्रुटियां मिल रही हैं:

Failed to refresh Gradle project 'SuperAwesomeApp'
     Could not find com.projectx.photosdk:sdk:1.0.0.
     Required by:
     SuperAwesomeApp:App:unspecified

आपने अपने flatDir ब्लॉक को गलत repostories ब्लॉक में रखा है। buildscript अंदर repositories ब्लॉक buildscript को एंड्रॉइड-ग्रैडल प्लगइन कहां से buildscript है, लेकिन बाकी निर्भरताओं को नहीं कहता है। आपको इस तरह के शीर्ष-स्तरीय repositories ब्लॉक की आवश्यकता है:

repositories {
    mavenCentral()
    flatDir {
        dirs 'aars'
    }
}

मैंने इसका परीक्षण किया और यह मेरे सेटअप पर ठीक काम करता है।


एंड्रॉइड स्टूडियो के हाल के संस्करणों के साथ, स्थानीय का उपयोग करने के लिए 1.3 के साथ परीक्षण किया गया .एएआर फ़ाइल और मैवेन / जेंटर रिपोजिटरी से प्राप्त नहीं किया गया, बस फ़ाइल> नया> नया मॉड्यूल पर जाएं और आयात करें। जेएआर /एएआर पैकेज

आप अपने प्रोजेक्ट में एक नया मॉड्यूल के साथ क्या समाप्त करेंगे जिसमें बहुत सरल build.gradle फ़ाइल है जो इस तरह कम या कम दिखती है:

configurations.create("default")
artifacts.add("default", file('this-is-yours-package-in-aar-format.aar'))

बेशक, अन्य परियोजनाओं को नियमित संकलन परियोजना निर्देश के साथ इस नए मॉड्यूल का संदर्भ देना होगा। तो एक ऐसे प्रोजेक्ट में जो इस नए मॉड्यूल का उपयोग करता है जो कि स्थानीय .aar फ़ाइल सरल है, यह इसके निर्माण में है .gradle

[...]
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    ompile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:design:23.1.0'
    [...]

    compile project(':name-of-module-created-via-new-module-option-described-above')
}
[...]

ऐसा लगता है कि स्थानीय निर्भरता के रूप में .aar फ़ाइलें अभी तक समर्थित नहीं हैं (0.5.0 बीटा में समर्थित होने की योजना बनाई गई है)

https://code.google.com/p/android/issues/detail?id=55863

लेकिन जिस तरह से आप निर्भरता में अपनी लाइब्रेरी का उपयोग कर रहे हैं, केवल तभी काम करेगा जब आपकी लाइब्रेरी केंद्रीय मैवेन रिपोजिटरी पर या स्थानीय मैवेन रिपोजिटरी में हो।

मॉड्यूल निर्भरताओं में .aar का उपयोग करने के लिए स्थानीय मैवेन रिपॉजिटरी का उपयोग कैसे करें इसके लिए इसका संदर्भ लें।

http://www.flexlabs.org/2013/06/using-local-aar-android-library-packages-in-gradle-builds


नवीनतम ग्रैडल संस्करण के साथ अब स्टैन का सुझाव देने का एक थोड़ा अद्यतन तरीका है ( प्रकाशन प्रस्तुत करना देखें)

apply plugin: 'maven-publish'

publishing {
    publications {
        aar(MavenPublication) {
            groupId 'org.your-group-id'
            artifactId 'your-artifact-id'
            version 'x.x.x'

            // Tell maven to prepare the generated "*.aar" file for publishing
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
        }
    }
    repositories {
        maven {
            url("file:" + System.getenv("HOME") + "/.m2/repository")
        }
    }
}




aar