Android M के लिए build.grad को कंपाइल-टाइम डिपेंडेंसी के रूप में Apache HTTP API(विरासत) कैसे जोड़ें?




httpclient build.gradle (7)

जैसा कि here बताया गया here , Android M Apache HTTP API को सपोर्ट नहीं करेगा। डॉक्स स्थिति:

इसके बजाय HttpURLConnection वर्ग का उपयोग करें।

या

अपाचे HTTP एपीआई का उपयोग जारी रखने के लिए, आपको पहले अपनी बिल्ड.gradle फ़ाइल में निम्नलिखित संकलन-समय निर्भरता की घोषणा करनी चाहिए:

android {उपयोग की सीमाएँ 'org.apache.http.legacy'}

मैंने HttpClient के अपने प्रोजेक्ट के उपयोग को HttpURLConnection में परिवर्तित कर दिया है, हालाँकि, मुझे अभी भी कुछ क्षेत्रों में HttpClient का उपयोग करने की आवश्यकता है। इसलिए, मैं एक संकलन-समय निर्भरता के रूप में 'org.apache.http.legacy' घोषित करने की कोशिश कर रहा हूं, लेकिन build.gradle में त्रुटि हो रही है:

ग्रैड डीएसएल विधि नहीं मिली: 'यूज़लिफ्ट्स ()'

मेरा प्रश्न है: मैं अपनी परियोजना में एक संकलन-समय पर निर्भरता के रूप में 'org.apache.http.legacy' की घोषणा कैसे करूं?

किसी भी प्रकार की मदद की बेहद सराहना की जाती है। धन्यवाद


Android 9 (पाई) के लिए नोट करें।

इसके अतिरिक्त उपयोग के लिए useLibrary 'org.apache.http.legacy' को आपको AndroidManifest.xml में जोड़ना होगा:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

स्रोत: https://developer.android.com/about/versions/pie/android-9.0-changes-28


अपनी बिल्ड.ग्रेड फ़ाइल में Android 6.0 Changes > Apache HTTP Client Removal नोट्स के अनुसार यूज़ लाइंस 'org.apache.http.legacy' जोड़ें।

android {
    ...
    useLibrary 'org.apache.http.legacy'
    ...
}

अनुपलब्ध लिंक त्रुटियों से बचने के लिए निर्भरता में जोड़ें

dependencies {
    provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}

निर्भरता में 'प्रदान' का उपयोग करते हुए एपीके में शामिल नहीं किया जाएगा


एपीआई 23 के लिए:

शीर्ष स्तर build.gradle - /build.gradle

buildscript {
    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.1'
    }
}
...

मॉड्यूल विशिष्ट build.gradle - /app/build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    useLibrary 'org.apache.http.legacy'
    ...
}

आधिकारिक डॉक्स (हालांकि पूर्वावलोकन के लिए): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client

नवीनतम एंड्रॉइड ग्रेडल प्लगइन चैंज: http://tools.android.com/tech-docs/new-build-system


एफडब्ल्यूआईडब्ल्यू ने अपाचे पुस्तकालय को हटाने से कुछ समय पहले पूर्वाभास किया था। हमारे अच्छे दोस्त जेसी विल्सन ने हमें 2011 में एक सुराग दिया: http://android-developers.blogspot.com/2011/09/androids-http-clients.html

Google ने कुछ समय पहले ApacheHTTPClient पर काम करना बंद कर दिया था, इसलिए कोई भी लाइब्रेरी जो अब भी उस पर निर्भर है, को हटाए गए पुस्तकालयों की सूची में रखा जाना चाहिए जब तक कि अनुचर अपने कोड को अपडेट नहीं करते।

<rant> मैं आपको यह नहीं बता सकता कि अपाचे HTTP क्लाइंट के साथ जुड़ने पर ज़ोर देने वाले लोगों के साथ मेरे कितने तकनीकी तर्क हैं। कुछ प्रमुख ऐप हैं जो टूटने जा रहे हैं क्योंकि मेरे गैर-नाम वाले पिछले नियोक्ताओं के प्रबंधन ने अपने शीर्ष इंजीनियरों की बात नहीं सुनी या उन्हें पता नहीं था कि वे क्या बात कर रहे थे जब उन्होंने चेतावनी को नजरअंदाज कर दिया था ... लेकिन, पानी के नीचे पुल।

मैं जीता।

</rant>


बस कॉपी की गई फ़ाइल: Android/Sdk/platforms/android-23/optional फ़ोल्डर से app/libs प्रोजेक्ट फ़ोल्डर app/libs में Android/Sdk/platforms/android-23/optional फ़ोल्डर।

23.1.1 के लिए आकर्षण की तरह काम किया।


मैंने इस समस्या को इस तरह हल किया:

1.) GUG के रूप में उच्च स्तरीय बिल्ड फ़ाइल में classpath सेट करें:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0-beta2'
    }
    allprojects {
        repositories {
           jcenter()
        }
    }
}

2.) विशिष्ट मॉड्यूल की बिल्ड फ़ाइल में:

android {
   useLibrary 'org.apache.http.legacy'
   compileSdkVersion 'android-MNC'
   buildToolsVersion '23.0.0 rc3'
}

समस्याओं को हल करने के लिए सुनिश्चित करें कि आप निर्माण उपकरण संस्करण "23.0.0 rc2" का उपयोग कर रहे हैं, निम्नलिखित उपकरण ढाल निर्भरता का निर्माण करते हैं:

classpath 'com.android.tools.build:gradle:1.3.0-beta2'




android-6.0-marshmallow