नए ग्रैडल एंड्रॉइड बिल्ड सिस्टम का उपयोग करके बाहरी एर पैकेज को मैन्युअल रूप से कैसे शामिल किया जाए


406

मैं नए एंड्रॉइड बिल्ड सिस्टम के साथ प्रयोग कर रहा हूं और मैं एक छोटी सी समस्या में चला गया हूं। मैंने ActionBarSherlock के अपने स्वयं के एर पैकेज को संकलित किया है जिसे मैंने 'actionbarsherlock.aar' कहा है। मैं जो करने की कोशिश कर रहा हूं वह वास्तव में इस आरा का उपयोग मेरे अंतिम एपीके को बनाने के लिए है। अगर मैं कंपाइल प्रोजेक्ट (': एक्शनबार्शर्लोक') का उपयोग करके अपने मुख्य प्रोजेक्ट के लिए एंड्रॉइड-लाइब्रेरी मॉड्यूल के रूप में पूरे ActionBarSherlock पुस्तकालय को शामिल करता हूं, तो मैं बिना किसी समस्या के सफलतापूर्वक निर्माण करने में सक्षम हूं।

लेकिन मेरी समस्या यह है कि मैं उस निर्भरता को एर फाइल पैकेज के रूप में प्रदान करना चाहता हूं, अगर मैं एक जार हूं तो मुझे यह पता नहीं लग सकता है कि इसे कैसे ठीक से अपनी परियोजना में शामिल किया जाए। मैंने संकलित विन्यास का उपयोग करने का प्रयास किया है, लेकिन यह काम नहीं करता है। मैं संकलित करने के दौरान प्रतीक नहीं पा रहा हूँ जो मुझे बताता है कि आरए पैकेज से class.jar को क्लासपाथ में शामिल नहीं किया जा रहा है।

क्या किसी को वाक्यविन्यास को मैन्युअल रूप से एक फ़ाइल के रूप में अनार पैकेज में शामिल करना है?

build.gradle

buildscript {

 repositories {
     mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:0.4'
  }
}
apply plugin: 'android'

repositories {
   mavenCentral()
}
dependencies {
    compile files('libs/actionbarsherlock.aar')
}

android {
    compileSdkVersion 15
    buildToolsVersion "17.0"
}

EDIT: तो इसका उत्तर यह है कि यह वर्तमान में समर्थित नहीं है, यदि आप इसे ट्रैक करना चाहते हैं तो यहां समस्या है।

संपादित करें: वर्तमान में जैसा कि यह अभी भी समर्थित नहीं है सीधे सबसे अच्छा विकल्प @RanWakshlak से प्रस्तावित समाधान प्रतीत होता है

संपादित करें: @VipulShah द्वारा प्रस्तावित वाक्यविन्यास का उपयोग करके भी सरल


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

मेरे प्रश्न पर एक नज़र डालें और यहां उत्तर दें stackoverflow.com/a/31662782/746347
मिक्स जूल

यदि आप ग्रैडल 3.0.0 या उच्चतर का उपयोग कर रहे हैं, तो इस सरल ग्रेडल सेटअप ने मेरे लिए काम किया: stackoverflow.com/questions/29081429/…
user1506104

जवाबों:


670

कृपया इसे काम करने के लिए नीचे दिए गए चरणों का पालन करें (मैंने इसे एंड्रॉइड स्टूडियो 2.2 तक परीक्षण किया है)

मान लें कि आपने एअर फ़ाइल को libs फ़ोल्डर में रखा है। (मान लें कि फ़ाइल का नाम है cards.aar)

फिर एप्लिकेशन में build.gradleनिम्नलिखित निर्दिष्ट करें और ग्रेड फाइल के साथ सिंक प्रोजेक्ट पर क्लिक करें। ओपन प्रोजेक्ट लेवल build.gradle और ऐड करें flatDir{dirs 'libs'}जैसे नीचे किया गया था

allprojects {
   repositories {
      jcenter()
      flatDir {
        dirs 'libs'
      }
   }
}

और अब app स्तर build.grdle फ़ाइल खोलें और .aarफ़ाइल जोड़ें

    dependencies {
       compile(name:'cards', ext:'aar')
}

अगर सबकुछ ठीक हो जाता है तो आप देखेंगे कि लाइब्रेरी की एंट्री बिल्ड -> एक्सप्लोडेड-आरा में की गई है

यह भी ध्यान दें कि यदि आप किसी अन्य प्रोजेक्ट से .AR फ़ाइल आयात कर रहे हैं जिसमें निर्भरताएँ हैं, तो आपको इन्हें अपने build.gradle में भी शामिल करना होगा।


5
@VipulShah लिबास डायरेक्टरी कहाँ स्थित है?
स्टूलस्टर्लिंग जूल

2
हो सकता है कि इसे ऐप मॉड्यूल 'build.gradle' में संशोधन करने की सलाह दी जाए और शीर्ष फ़ोल्डर 'build.gradle' में नहीं।
लोलोफो 64

3
ऊपर मेरे सवाल का जवाब मिला: compileनिर्भरता के बजाय दो निर्भरताएं जोड़ें debugCompile(name:'cards-debug', ext:'aar')औरreleaseCompile(name:'cards-release', ext:'aar')
इफ्ता जूल

2
नमूना कोड के साथ भ्रमित न हों। पहला ब्लॉक allprojects {...}"प्रोजेक्ट" लेवल ग्रेड फ़ाइल में जाता है, और दूसरा भाग dependencies {...}"ऐप" लेवल ग्रेड फ़ाइल में जाना चाहिए।
किरिल कर्माज़िन

8
कृपया आप उत्तर दें: चेतावनी: कॉन्फ़िगरेशन 'संकलन' अप्रचलित है और इसे 'कार्यान्वयन' और 'एपीआई' से बदल दिया गया है। इसे 2018 के अंत में हटा दिया जाएगा। अधिक जानकारी के लिए देखें: d.android.com/r/tools/update-d dependency
-configurations.html

248
  1. अपनी परियोजना पर राइट क्लिक करें और "ओपन मॉड्यूल सेटिंग्स" चुनें

मॉड्यूल सेटिंग्स खोलें

  1. नया मॉड्यूल जोड़ने के लिए विंडो के ऊपरी बाएँ कोने में "+" बटन पर क्लिक करें ।

नया मॉड्यूल जोड़ें

  1. का चयन करें "आयात .JAR या .AAR पैकेज" और क्लिक "अगली" बटन।

आयात AAR

  1. "फ़ाइल नाम" फ़ील्ड के बगल में दीर्घवृत्त बटन "..." का उपयोग करके AAR फ़ाइल ढूंढें ।

AAR फ़ाइल ढूँढें

  1. एप्लिकेशन के मॉड्यूल को चयनित रखें और निर्भरता के रूप में नए मॉड्यूल को जोड़ने के लिए निर्भरता फलक पर क्लिक करें ।

निर्भरता फलक

  1. निर्भरता स्क्रीन के "+" बटन का उपयोग करें और "मॉड्यूल निर्भरता" का चयन करें ।

मॉड्यूल निर्भरता जोड़ें

  1. मॉड्यूल का चयन करें और "ओके" पर क्लिक करें ।

मॉड्यूल चुनें


4
सर्वश्रेष्ठ उत्तर, उसके बाद ध्यान रखें Alt+B> प्रोजेक्ट को स्वच्छ और पुनर्निर्माण करें। Android स्टूडियो आप दर्दनाक क्यों हैं! मेरी इच्छा है कि नेटबीन्स आईडीई एंड्रॉयड डेवलपर प्लेटफॉर्म के रूप में हो
जावा एसीएम

@ ओलिवर तुम कमाल हो!
अंकित पुरवार

आप सबसे अच्छे हो!
कोडजॉम्बी

2
हर बार जब आप aarअपनी परियोजना के लिए कुछ दायित्व जोड़ना चाहते हैं, तो एक नया मॉड्यूल बनाना सबसे अच्छा विचार नहीं है
किरील कर्माज़िन

तुम कमाल हो मेरे दोस्त !! इससे खुश होते हैं।
तीमुथियुस मकारिया

111

आप एक भंडार से एक अनार फाइल को संदर्भित कर सकते हैं। एक मावेन एक विकल्प है, लेकिन इसका एक सरल समाधान है: aar फ़ाइल को अपनी लिबास डायरेक्टरी में रखें और डायरेक्टरी रिपॉजिटरी जोड़ें।

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

फिर निर्भरता अनुभाग में लाइब्रेरी का संदर्भ लें:

  dependencies {
        implementation 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

आप अधिक जानकारी के लिए Min'an ब्लॉग पोस्ट देख सकते हैं ।


1
यह बहुत अच्छा काम करता है, और स्वीकृत / उच्च श्रेणी के उत्तरों से बेहतर है क्योंकि यह सरल है और मैं इसे प्रत्येक डेवलपर के स्थानीय मैवेन रेपो में फ़ाइल को जोड़े बिना संस्करण नियंत्रण में शामिल कर सकता हूं (यदि मुझे ऐसा करना था, तो पहले स्थान पर ग्रेडल का उपयोग क्यों करें ?) धन्यवाद!
अंजपोल

@ajpolt संभवतः इसके बजाय एक रेपो सर्वर स्थापित करने की सिफारिश की जाती है (मालिकाना डिपो के लिए) इसलिए आपको इसे देव मशीनों पर या अपने प्रोजेक्ट के लिबास फ़ोल्डर में नहीं रखना होगा। यदि आपके पास बस एक निर्भरता है, तो इसे एक मावेन संरचित Google कोड रिपॉजिटरी (एक अस्थायी रेपो के रूप में) में फेंक दें
लो-टैन

4
इस उत्तर में ध्यान देने वाली सबसे महत्वपूर्ण बात निर्भरता के अंत में '@AR' का उल्लेख है।
अथर्व

मुझे लगता है कि यह अब नवीनतम ग्रेडल प्लगइन के साथ काम नहीं करेगा: stackoverflow.com/questions/60878599/…
डेविड

यह एक और एकमात्र उत्तर है जिसमें सरल रूप शामिल है, जिसमें सभी आधुनिक वाक्यविन्यास शामिल हैं, implementationआदि। यह समाधान का कॉपी-पेस्ट है। आने वाले नए अपवोट के बहुत सारे क्योंकि एंड्रॉइड बिल्ड ग्रैडल प्लगिन 4.0.0 अब टूटे हुए .ar रास्तों को अनदेखा करने के बजाय एक त्रुटि फेंकता है
पैट्रिक

51

नीचे का दृष्टिकोण नवीनतम एंड्रॉइड स्टूडियो (> v0.8.x) के साथ काम करता है:

  • सहेजें aarएप्लिकेशन मॉड्यूल के तहत फ़ाइल libsफ़ोल्डर (जैसे: <project>/<app>/libs/myaar.aar)

  • अपने "ऐप" मॉड्यूल फ़ोल्डर के build.gradle के लिए नीचे जोड़ें (आपकी परियोजना रूट build.gradle नहीं)। संकलन लाइन में नाम नोट करें, यह myaar @ aar नहीं myaar.aar है।

    dependencies {
        compile 'package.name.of.your.aar:myaar@aar'
    }
    
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
  • क्लिक करें Tools -> Android -> Sync Project with Gradle Files


3
के रूप में 1.0 पर सही काम करता है
पाब्लो जॉनसन

1
मामले में अगर किसी को इसकी जरूरत है, अगर ग्रेड ठीक काम करता है, लेकिन आप अभी भी कक्षाएं नहीं देख सकते हैं, तो एंड्रॉइड स्टूडियो को फिर से शुरू करें ...
htafoya

1
यह समाधान AS2.2 में बढ़िया काम करता है - ऐसा लगता है कि AAR फ़ाइलों के सिंटैक्स पर ग्रेडल आश्चर्यजनक रूप से अचार है।
जिम एंड्रियास

कृपया अपडेट करें या हटाएं, संकलन को हटा दिया गया है और यह मुद्दा भी है: stackoverflow.com/questions/60878599/…
डेविड

49

पहले (डिफ़ॉल्ट)

implementation fileTree(include: ['*.jar'], dir: 'libs')

बस सरणी '*.aar'में जोड़ें include

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')

यह एंड्रॉइड स्टूडियो 3.x पर अच्छी तरह से काम करता है।

यदि आप कुछ पुस्तकालय की उपेक्षा करना चाहते हैं? इसे अवश्य पसंद करें।

implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')

1
इस कोड को इस सवाल का जवाब कर सकते हैं, के बारे में अतिरिक्त संदर्भ प्रदान करने के लिए कैसे और / या क्यों यह हल करती है समस्या जवाब की दीर्घकालिक मूल्य में सुधार होगा।
अलेक्जेंडर

1
काम करना ठीक है, यह पुस्तकालय जाने के लिए सरल है। लेकिन उनका यहाँ एक मुद्दा है: आपको इसे काम करने के लिए अपनी aar फ़ाइल में आयातित सभी लाइब्रेरी को आयात करना होगा। इस पद्धति का उपयोग करके aar फ़ाइल से आयात का प्रचार नहीं किया जाता है।
तोबलीग

या, और भी सरल:implementation fileTree(include: ['*.?ar'], dir: 'libs')
तले

@friederbluemle बल्कि सरल की तुलना में मैं छोटा कहूँगा, और एक ही समय में, सैद्धांतिक रूप से।
डेविड

21

मैं अभी सफल हुआ हूँ!

  1. Libs / folder में mylib-0.1.aar फाइल कॉपी करें

  2. इन पंक्तियों को build.gradle के नीचे जोड़ें (एप्लिकेशन होना चाहिए, प्रोजेक्ट नहीं):

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
  3. अब तक सब ठीक है। यहाँ सबसे महत्वपूर्ण बिंदु आता है:

जब तक ऑफ़लाइन मोड सक्षम न हो जाए, ग्रेडेल को निर्भरता के लिए नेटवर्क तक पहुंचने की आवश्यकता है।

सुनिश्चित करें कि आपने प्रोजेक्ट संरचना / पदक्रम में चेकबॉक्स के माध्यम से ऑफ़लाइन कार्य को सक्षम किया है

- या

नेटवर्क तक पहुँचने के लिए प्रॉक्सी सेटिंग्स कॉन्फ़िगर करें ।

प्रॉक्सी सेटिंग्स को कॉन्फ़िगर करने के लिए आपको प्रोजेक्ट की gradle.properties फ़ाइल को संशोधित करना होगा , http और https को अलग से नीचे के रूप में कॉन्फ़िगर करना होगा:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>

आशा है कि यह काम करेगा।


कृपया अपडेट करें या हटाएं, संकलन को हटा दिया गया है और यह समस्या भी है: stackoverflow.com/questions/60878599/…
डेविड

20

वर्तमान में एक स्थानीय .AR फ़ाइल को संदर्भित करना समर्थित नहीं है (जैसा कि जेवियर डुक्रोकेट द्वारा पुष्टि की गई है)

इसके बजाय आप क्या कर सकते हैं एक स्थानीय मावेन रिपॉजिटरी स्थापित की जाती है (जितना लगता है उससे कहीं अधिक सरल) और वहाँ से संदर्भ।

मैंने एक ब्लॉगपोस्ट लिखा है जिसमें बताया गया है कि यह कैसे काम करता है:

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


मैं यह काम करने के लिए प्रबंधन नहीं किया था जब विरूपण साक्ष्य स्नैपशॉट है, किसी भी विचार क्यों?
tbruyelle

क्या आपको यह केवल एक्लिप्स, या एंड्रॉइड स्टूडियो के साथ काम करने को मिला? ग्रहण के साथ, "वर्गीकृत ग्रहण" क्लास फ़ाइल को क्लासपाथ में जोड़ता है, लेकिन ग्रहण इसके द्वारा कक्षाओं को नहीं पहचानता है।
andrej_k 23

इस सवाल का चेक stackoverflow.com/questions/20911665/... अगर ट्यूटोरियल अपने स्थानीय .aar फ़ाइल पालन करने के बाद (Gradle 1.9 पर या ऊपर) नहीं मिला है
Maragues

कृपया अपडेट करें या हटाएं, यह उत्तर अप्रचलित है।
डेविड

18

आप aarकोड की कुछ पंक्तियों के साथ कई निर्भरताएं जोड़ सकते हैं ।

स्थानीय flatDirभंडार जोड़ें :

repositories {
    flatDir {
        dirs 'libs'
    }
} 

निर्भरता कॉन्फ़िगरेशन के लिए निर्देशिका aarमें प्रत्येक जोड़ें :libscompile

fileTree(dir: 'libs', include: '**/*.aar')
        .each { File file ->
    dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}

यह काम किया है, लेकिन एक चेक कैसे लगाया जा सकता है, अगर निर्भरता पहले से ही एक मावेन निर्भरता के रूप में जोड़ दी जाती है, तो मैं नहीं चाहता कि एअर फ़ाइल को जोड़ा जाना चाहिए, पुनश्च: Im एक प्लगइन लिखने के लिए इसका उपयोग करके जो स्वचालित रूप से एंड्रॉइड प्रोजेक्ट में मेरी आरा जोड़ता है और build.gradle में निर्भरता जोड़ता है
Adi

@ अदि यदि आपके पास पहले से ही मावेन निर्भरता है तो libsफोल्डर में संबंधित एर को न डालें ।
मिश्रण 18

प्रतिक्रिया के लिए धन्यवाद, जैसा कि मैंने उल्लेख किया है, lib में aar जोड़ने से एक एंड्रॉइड स्टूडियो प्लगइन विकसित होता है जो कि विकासशील है, इसलिए मैं जानना चाहता हूं कि क्या build.gradle फ़ाइल में जो निर्भरता प्लगइन जोड़ता है, वह पहले से ही जोड़ा गया है।
आदि

मेरे पास अभी जवाब नहीं है। मुझे लगता है कि अलग प्रश्न बनाना बेहतर है।
मिश्रण

15

दुर्भाग्य से यहाँ समाधानों में से किसी ने भी मेरे लिए काम नहीं किया (मुझे अनसुलझे निर्भरताएँ मिलती हैं)। अंत में क्या काम किया है और सबसे आसान तरीका IMHO है: एंड्रॉइड स्टूडियो से प्रोजेक्ट नाम को हाइलाइट करें तब फ़ाइल -> नया मॉड्यूल -> आयात जार या एएआर पैकेज। इस पोस्ट में क्रेडिट समाधान के लिए जाता है


1
यह ध्यान दिया जाना चाहिए कि एंड्रॉइड स्टूडियो उनके आयात विज़ार्ड में असाधारण रूप से अस्पष्ट है। जब वे चरणों में से एक में "फ़ाइल का नाम" बताते हैं, तो वे वास्तव में जो पूछ रहे हैं वह फ़ाइल का मार्ग है ... उम्मीद है कि यह संदेश दूसरों को सिरदर्द से बचाता है।
तुकाजो

13

2 तरीके हैं:

पहला तरीका

  1. अपना Android स्टूडियो खोलें और Create New Moduleविंडो में नेविगेट करेंFile -> New -> New Module

यहां छवि विवरण दर्ज करें

  1. Import .JAR/.AAR Packageआइटम का चयन करें और Nextबटन पर क्लिक करें

  2. उस build.gradleफ़ाइल में निर्भरता जोड़ें जो आपके appमॉड्यूल से संबंधित है।

    dependencies {
        ...
        implementation project(path: ':your aar lib name')
    }

बस इतना ही।

दूसरा तरीका

  1. निर्देशिका में एक फ़ोल्डर बनाएँ libs, जैसे aars

  2. अपने aar lib को aars फोल्डर में रखें।

  3. कोड स्निपेट जोड़ें

repositories {
    flatDir {
        dirs 'libs/aars'
    }
}

आपकी build.gradleफ़ाइल में ऐप मॉड्यूल है।

  1. उस build.gradleफ़ाइल में निर्भरता जोड़ें जो आपके appमॉड्यूल से संबंधित है।
dependencies {
    ...
    implementation (name:'your aar lib name', ext:'aar')
}

बस इतना ही।

यदि आप चीनी पढ़ सकते हैं, तो आप ब्लॉग को देख सकते हैं, 文件 AAR,, 开发 开发 Android,,,


यह उत्तर मेरे लिए वास्तव में मददगार था
Csabi

जब पहली तरह से पालन किया जाता है, तो एअर फ़ाइल के अंदर की कक्षाओं को मुख्य परियोजना में नहीं पाया जाता है, क्या हमें कोई अतिरिक्त कॉन्फ़िगरेशन जोड़ने की आवश्यकता है?
किरण

कृपया अद्यतन करें या हटाएं, उत्तर पहले से ही पोस्ट किए गए हैं और दूसरा "संकलन" पदावनत है।
डेविड

12

एंड्रॉइड स्टूडियो 3.4 और ग्रेड 5 के साथ आप बस इसे इस तरह से कर सकते हैं

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}

1
यह सबसे अच्छा जवाब है। निर्भरता स्पष्ट और बहुत सरल है।
निकमून

1
इस पर सबसे अच्छा जवाब दिया जा रहा है। तुरंत काम किया, एक रिएक्टिव नेटिव लाइब्रेरी के लिए .aar निर्भरता को जोड़ने के लिए एकदम सही था।
जोश बेकर

1
यह प्रवणता प्लगइन 4 के साथ शुरू होने वाली एक त्रुटि फेंकता है: stackoverflow.com/questions/60878599/…
डेविड

@ डेविड रिपोर्ट के लिए धन्यवाद, मैं इसे जांचने की कोशिश करूंगा।
m0skit0

10

अद्यतन ANDROID स्टूडियो 3.4

  1. पर जाएं फ़ाइल -> परियोजना संरचना

यहां छवि विवरण दर्ज करें

  1. मॉड्यूल और पर क्लिक करें +

यहां छवि विवरण दर्ज करें

  1. आयात .AR पैकेज का चयन करें

यहां छवि विवरण दर्ज करें

  1. .AR मार्ग खोजें

यहां छवि विवरण दर्ज करें

  1. समाप्त करें और लागू करें , फिर सत्यापित करें कि क्या पैकेज जोड़ा गया है

यहां छवि विवरण दर्ज करें

  1. अब ऐप मॉड्यूल में + और मॉड्यूल डिपेंडेंसी पर क्लिक करें

यहां छवि विवरण दर्ज करें

  1. लाइब्रेरी पैकेज और ओके की जाँच करें

यहां छवि विवरण दर्ज करें

  1. जोड़ा निर्भरता सत्यापित करें

यहां छवि विवरण दर्ज करें

  1. और इस तरह परियोजना संरचना

यहां छवि विवरण दर्ज करें


1
यह 17 वां उत्तर है जो मैंने पढ़ा है कि आखिरकार निर्भरता को जोड़ा गया है .. eeh
Taras Matsyk

6

मुझे भी यह समस्या हुई है। यह समस्या रिपोर्ट: https://code.google.com/p/android/issues/detail?id=55863 यह सुझाव देती है कि सीधे .AAR फ़ाइल का समर्थन नहीं किया गया है।

शायद अब के लिए विकल्प यह है कि आप अपनी परियोजना की मूल निर्देशिका के तहत ग्रैडल लाइब्रेरी के रूप में एक्शनबर्स्कलॉक लाइब्रेरी को परिभाषित करें और तदनुसार संदर्भ दें।

सिंटैक्स को यहाँ परिभाषित किया गया है http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library


मुद्दे के संदर्भ के लिए धन्यवाद। हां, मुझे यह पता है कि ग्रैडल एंड्रॉइड लाइब्रेरी का उपयोग करके यह काम कैसे किया जाता है, लेकिन यह विकल्प उस परियोजना के लिए वास्तव में इष्टतम नहीं है जिस पर मैं काम कर रहा हूं लेकिन thx!
मिगुएल लविग्ने

3

मुझे यह समस्या एंड्रॉइड इश्यू ट्रैकर में मिली: https://code.google.com/p/android/issues/detail?id=55863#c21

ट्रिक (फिक्स नहीं) आपकी .AR फ़ाइलों को एक सबप्रोजेक्ट में अलग करना और कलाकृतियों के रूप में आपके लिबास को जोड़ना है:

configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))

अधिक जानकारी: हैंडलिंग-सकर्मक-निर्भरता-के लिए स्थानीय-कलाकृतियाँ-जार-और-आरा


यह सही है, और यहाँ उदाहरण है: github.com/textileio/notes/commit/… में , compile project(':mobile')android / app / build.gradle में, configurations.maybeCreate("default")android / mobile / build.gradle में, include ':mobile'android / settings.gradle में
Zheng Zheng

3

मेरे मामले में मेरी लाइब्रेरी में कुछ कमियां हैं और जब मैं aarइसमें से एक बनाता हूं तो मैं चूक गए, क्योंकि चूक हुई है, इसलिए मेरा समाधान है कि मैं एक arrफाइल के साथ अपने काम से सभी डेफिसिट को जोड़ दूं ।

तो मेरा प्रोजेक्ट स्तर build.gradleऐसा लगता है:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
        //add it to be able to add depency to aar-files from libs folder in build.gradle(yoursAppModule)
        flatDir {
            dirs 'libs'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(modile app) इसलिए:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.sampleapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //your project depencies
    ...
    //add lib via aar-depency
    compile(name: 'aarLibFileNameHere', ext: 'aar')
    //add all its internal depencies, as arr don't have it
    ...
}

और पुस्तकालय build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //here goes library projects dependencies, which you must include
    //in yours build.gradle(modile app) too
    ...
}

3

मैंने यहां सभी समाधान की कोशिश की, लेकिन कोई भी काम नहीं कर रहा है, तब मुझे एहसास हुआ कि मैंने गलती की है, मैंने .aarगलत फ़ोल्डर में डाल दिया है , जैसा कि आप नीचे देख सकते हैं, मुझे लगा कि मुझे रूट फ़ोल्डर में रखना चाहिए, इसलिए मैंने libsवहां एक फ़ोल्डर बनाया (चित्र में 1) ), लेकिन ऐप फ़ोल्डर के अंदर, पहले से ही एक है libs, आपको दूसरे में डाल देना चाहिए libs, आशा है कि यह उन लोगों की मदद करेगा जिनके पास मेरा एक ही मुद्दा है:

यहां छवि विवरण दर्ज करें


3

किसी अनुप्रयोग में AAR फ़ाइल आयात करने का मानक तरीका https://developer.android.com/studio/projects/android-library.html#AddD dependency में दिया गया है

फ़ाइल> नया> नया मॉड्यूल पर क्लिक करें। आयात .JAR / .AAR पैकेज पर क्लिक करें और फिर अगला क्लिक करें। संकलित AAR या JAR फ़ाइल का स्थान दर्ज करें फिर समाप्त पर क्लिक करें।

कृपया अगले चरणों के लिए उपरोक्त लिंक देखें।


2

बस जवाब को सरल बनाने के लिए

यदि .AR फ़ाइल स्थानीय रूप से मौजूद है, तो
compile project(':project_directory')अपनी परियोजना के build.gradle की निर्भरता में शामिल करें।

यदि .AR फ़ाइल दूरस्थ पर मौजूद है, तो compile 'com.*********.sdk:project_directory:0.0.1@aar'अपनी परियोजना के build.gradle की निर्भरता में शामिल करें।


0

मेरे मामले में बस तब काम करें जब मैं संकलन करने के लिए "प्रोजेक्ट" जोड़ूँ:

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


dependencies {
   compile project('com.x.x:x:1.0.0')
}

0

आप इस तरह से कुछ कर सकते हैं:

  1. अपने स्थानीय पुस्तकालयों (विस्तार के साथ: .jar, .AR, ...) को 'लिबास' फ़ोल्डर (या यदि आप चाहें तो एक और) में डालें।

  2. बिल्ड.ग्रेडल (ऐप स्तर) में, इस लाइन को निर्भरता में जोड़ें

    कार्यान्वयन फ़ाइलट्री (शामिल करें: ['* .जार', '* .AR'], डीआईआर: 'लिबास')

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.