21

के बाद मैंने संस्करण 3 में एंड्रॉइड स्टूडियो अपडेट किया है और अब त्रुटियों के बिना पहले संकलित मेरे प्रोजेक्ट को संकलित करने में असमर्थ लगता है।कॉमन्स-लॉगिंग उन कक्षाओं को परिभाषित करता है जो एंड्रॉइड द्वारा प्रदान की जाने वाली कक्षाओं के साथ संघर्ष करते हैं जो एंड्रॉइड स्टूडियो अपडेट

त्रुटि संदेश का पालन है

Error:Error: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or okhttp instead), or repackaging the library using something like jarjar. [DuplicatePlatformClasses]

निर्भरता

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:27.0.0' 
    compile 'com.android.support:design:27.0.0' 
    compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient' 
    compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient' 
    compile 'com.google.firebase:firebase-core:11.4.2' 
} 

हैं और त्रुटि तो क्यों यह नहीं है मैं पहले से ही exclude module: 'httpclient' का उपयोग द्वारा

compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient' 
compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient' 

वजह से लगता है संकलन? क्या यह एंड्रॉइड स्टूडियो 3 और \ या com.android.tools.build:gradle:3.0.0 प्लगइन शामिल है या मुझे कुछ याद आ रहा है? पिछले संस्करण के साथ बिल्कुल एक ही परियोजना को संकलित करने में कोई समस्या नहीं है।

+0

कोड निम्नलिखित नीचे जोड़ने async-http साथ जारी रखना चाहते हैं "तो क्यों यह संकलन नहीं करता है?" - त्रुटि के आधार पर आपकी समस्या 'कॉमन्स-लॉगिंग' के साथ है। शायद उन 'com.google' निर्भरताओं के नए संस्करण हैं जिनका उपयोग आप करना चाहिए। – CommonsWare

+0

@CommonsWareI को कोई नई लाइब्रेरी नहीं मिली है ये संस्करण नवीनतम हैं 20177 रिलीज – AndreaF

+0

क्या आपके पास libs फ़ोल्डर में एक ही जार हैं? –

उत्तर

31

build.gradle एप्लिकेशन मॉड्यूल

configurations { 
    all { 
     exclude module: 'httpclient' 
    } 
} 
+0

अगर मैं httpclient – R2R

+0

@RameshSambu को बहिष्कृत करता हूं तो मैं रिलीज एपीके प्राप्त नहीं कर पा रहा हूं क्या आपने उपरोक्त कोड को ऐप मॉड्यूल के आंतरिक build.gradle में रखा है? – Silverstorm

+0

हां मैंने जोड़ा – R2R

12

में स्थित में जोड़े यदि समस्या कॉमन्स-प्रवेश तो यह भी बाहर रखा जाना चाहिए के साथ है। एप्लिकेशन/build.gradle में निम्न कोड जोड़ें

configurations { 
    all { 
     exclude module: 'httpclient' 
     exclude module: 'commons-logging' 
    } 
} 
3

आप Google API क्लाइंट लाइब्रेरी से "कार्यान्वयन" के साथ "org.apache.httpcomponents" "संकलन" के रूप में यह नवीनतम Gradle में पदावनत है और exlude बदलना चाहिए:

implementation('com.google.api-client:google-api-client-android:1.23.0') { 
    exclude group: 'org.apache.httpcomponents' 
} 
implementation('com.google.http-client:google-http-client-gson:1.23.0') { 
    exclude group: 'org.apache.httpcomponents' 
} 

इस समाधान यहाँ पाया गया था: https://developers.google.com/google-apps/activity/v1/quickstart/android

+0

संकलन पर निर्भर करती है: वर्तमान मॉड्यूल वाले प्रत्येक के लिए लाइब्रेरी संकलित करें। कार्यान्वयन: वर्तमान मॉड्यूल के लिए लाइब्रेरी संकलित करें, इसका अर्थ यह है कि कार्यान्वित लाइब्रेरी "पैरेंट" मॉड्यूल के लिए दृश्यमान नहीं है –

2

टर्मिनल में चलाएँ, परियोजना फ़ोल्डर के अंदर:

./gradlew app:dependencies > dependencies.txt 

फिर कौन conflictive निर्भरता उपयोग कर रहा है लगता है और उसके अनुसार कार्य (अद्यतन के लिए जाँच, यह से छुटकारा पाने के लिए, या के रूप में @Silverstorm ने सुझाव दिया को बाहर का उपयोग करें)

1

एक ही मुद्दा मिल गया dependencies.txt की जाँच करें। मैं नीचे किया है बदलता है

configurations { 
    all{ 
     exclude group: 'commons-logging', module: 'commons-logging' 
     exclude group: 'org.apache.httpcomponents' 
    } 
} 


packagingOptions { 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/NOTICE.txt' 
    exclude 'META-INF/NOTICE' 
    exclude 'org/apache/http/version.properties' 
    exclude 'org/apache/http/client/version.properties' 
} 
1

आप तो केवल में app/build.gradle

configurations { 
    all { 
     exclude module: 'commons-logging' 
    } 
} 
संबंधित मुद्दे

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