2016-11-03 11 views
6

के अंदर जार का उपयोग करके एएआर बनाएं I am aar और jar फ़ाइल निर्भरता का उपयोग कर एएआर फ़ाइल बना रहा हूं। मैंने सफलतापूर्वक .aar रिलीज फ़ाइल बनाई है।एंड्रॉइड स्टूडियो एक और एएआर फ़ाइल और

फिर, मैंने नमूना परियोजना में अपनी नई एएआर फ़ाइल आयात की है। परियोजना ठीक चल रही है। जब उस आार और जार कक्षाओं का उपयोग करने के लिए जा रहा है, तो यह NoClassDefFound त्रुटि दिखा रहा है।

नोट: सबसे पहले मैं जानना चाहता हूं, अब एक और एएआर के अंदर एएआर संभव है या नहीं। क्या कोई मुझे इस नई चीजों के मुद्दे से बाहर निकलने में मदद कर सकता है?

मैंने इस लिंक को Create an AAR with multiple AARs/JARs पर भी संदर्भित किया। यह transitive = सच कह रहा है। लेकिन, समझ में नहीं आता, उस ध्वज का उपयोग कहां करें। आवेदन का उपयोग करते हुए या एएआर परियोजना निर्भरताओं के अंदर एएआर बनाने के दौरान तीसरे पक्ष में।

धन्यवाद अग्रिम।

मेरे मिनी परियोजना Gradle फ़ाइल:

मिनी परियोजना है, जो केवल .AAR फ़ाइल में परिवर्तित। तो, इस फ़ाइल को केवल उपयोग करने के लिए एक और NewProject

मिनी परियोजना Build.gradle फ़ाइल

/* 
This would be enabled for development purpose and to debug and check the same 
*/ 

apply plugin: 'com.android.application' 

/* 
This would be enabled for exporting as aar file 
apply plugin: 'com.android.library' 
*/ 

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

android { 

    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    dexOptions { 
     javaMaxHeapSize "4g" 
     preDexLibraries = false 
    } 
    defaultConfig { 

     /* 
     This application id would be used for development purpose and to debug and check the same. 
     This would be commented when exporting as library 
     */ 
     applicationId 'com.pss.pssplayer' 
     minSdkVersion 18 
     targetSdkVersion 23 
     multiDexEnabled true 
     versionCode 1 
     versionName "1.0" 
    } 

    aaptOptions { 
     cruncherEnabled = false 
    } 

    buildTypes { 

     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro' 

     } 
    } 

    productFlavors { 
    } 
} 

dependencies { 

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

    testCompile 'junit:junit:4.12' 

    compile 'com.android.support:appcompat-v7:23.1.1' 

    compile 'com.android.support:support-v4:23.1.1' 

    compile files('libs/ksoap2-android-assembly-3.2.0-jar-with-dependencies.jar') 

    compile files('libs/secure.jar') 

    compile(project(':getSubProject')) { 

     transitive = true 

    }// this getSubProject also contains one classes jar 
} 
+0

आपको निर्भरता में 'transitive = true' जोड़ना होगा जिसमें आप अपनी मुख्य परियोजना में शामिल हैं। –

+0

मैंने मुख्यप्रोजेक्ट में transitive = true के लिए जोड़ा। लेकिन, मुझे एक ही त्रुटि मिल रही है। एक विशेष वर्ग आयातित आर्म से नॉकलासडेफॉउंड त्रुटि दिखा रहा है। – harikrishnan

+0

कृपया 'build.gradle' का कोड पोस्ट करें। –

उत्तर

1

उपयोग android-fat-aar Gradle प्लगइन है, यह है सुपर उपयोगी!

+0

पर क्लाइंट के जार और एआर को पैकेज कर सकते हैं। यह समाधान –

+0

काम नहीं करता है उपर्युक्त वसा-एर विधि केवल एंड्रॉइड नेटिव में एंड्रॉइड नेटिव में एएआर लाइब्रेरी बनाने के लिए काम कर रही है स्टूडियो सफलतापूर्वक। – harikrishnan

2

जब आप अपने आर और अपने निर्भरता में जार का उल्लेख है, तो आप के लिए संदर्भ के साथ अपने नए आर संकलन कर सकते हैं जा रहा प्रथम।

लेकिन वे आपके हवाई में एम्बेडेड नहीं हैं। इसके बजाए, "बड़ा आरा" का उपयोग करने वाले एप्लिकेशन को पहले दो पर निर्भरता की भी आवश्यकता है।

इसके लिए, आप अपने सभी एआर को एक स्वर्ग में रख सकते हैं जैसे मेवेन को बताते हुए कि "बड़ा आरा" पहले दो पर निर्भर करता है। (-> pom.xml)

आपके द्वारा एप्लिकेशन build.gradle फ़ाइल में, आप निर्भरता की निर्भरताओं को देखने के लिए सिस्टम को बताने के लिए केवल transitive=true के साथ "बड़ा आरा" पर निर्भरता जोड़ सकते हैं।

संपादित:

आपको कम से कम जार विलय कर सकते हैं। इन उत्तरों को देखो:

gradle - how do I build a jar with a lib dir with other jars in it?

Can Gradle jar multiple projects into one jar?

विलय आर और अधिक कठिन है क्योंकि आप सभी संसाधनों, प्रकट होता है और इतने पर मर्ज करने के लिए है ...

+0

देख सकते हैं मुझे इस विकल्प यार का प्रयास करने दें। मैं अपने बेस आवर को जार से मैवेन केंद्रीय भंडार में प्रकाशित करूंगा और मिनीप्रोजेक्ट निर्भरताओं को संदर्भित करूंगा। फिर, मैं एएआर के रूप में परिवर्तित हो जाऊंगा और नई परियोजना के साथ उपयोग और जांच करूँगा। – harikrishnan

+0

हाय बिपी, मेरे पास विक्रेता एएआर और जार फ़ाइल है। वैसे भी, वे जांसर प्रकाशित करने की अनुमति नहीं दे रहे हैं।नियम के अनुसार, वे केवल .aar और .jar की तरह ही देंगे। – harikrishnan

+0

अन्य आंग और जार के साथ मर्ज मर्ज संभव नहीं है जब तक कि एंड्रॉइड-वसा-एर जैसे उपकरणों का उपयोग न हो। क्या आप स्थानीय मैवेन रेपो स्थापित करने के बारे में सोच सकते हैं जो आपके लिए निर्भरता समस्याओं को संभालेगा? हम अपनी कंपनी में artifactory का उपयोग कर रहे हैं। – Bipi

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