android - चेतावनी: एपीआई 'variant.getJavaCompile()' अप्रचलित है और इसे 'variant.getJavaCompileProvider()' से बदल दिया गया है




android-studio compilation (14)

अचानक ग्रेडिंग सिंक करते समय, मुझे यह त्रुटि मिलती है:

चेतावनी: एपीआई 'variant.getJavaCompile ()' अप्रचलित है और इसे 'variant.getJavaCompileProvider ()' से बदल दिया गया है। इसे 2019 के अंत में हटा दिया जाएगा। अधिक जानकारी के लिए, https://d.android.com/r/tools/task-configuration-avoidance प्रभावित मॉड्यूल: ऐप देखें

मुझे ऐप मॉड्यूल के लिए यह build.gradle मिला है:

WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance
Affected Modules: app

मैं ऐप को सही ढंग से संकलित कर सकता हूं, लेकिन यह थोड़ा परेशान करने वाला है, और जैसा कि मैं इसे देखता हूं, 2019 के अंत में कुछ काम करना बंद कर देगा। कोई भी विचार है कि यह क्या है और इसे कैसे हल किया जाए?


अपने प्रोजेक्ट को androidX पर माइग्रेट करें।

निर्भरताएँ androidX में अपग्रेड की जाती हैं। इसलिए यदि आप androidX सामग्री का उपयोग करना चाहते हैं, तो अपने प्रोजेक्ट को androidX में माइग्रेट करें।

एंड्रॉइड स्टूडियो 3.2 और उच्चतर के साथ, आप मेनू पट्टी से Refactor> Androidrate पर AndroidX का चयन करके AndroidX का उपयोग करने के लिए किसी मौजूदा प्रोजेक्ट को जल्दी से माइग्रेट कर सकते हैं।

डाउनग्रेडिंग निर्भरताएँ इस बार आपकी समस्या को ठीक कर सकती हैं - लेकिन अनुशंसित नहीं


Classpath 'com.android.tools.build:gradle:3.3.0-alpha13' से classpath 'com.android.tools.build:gradle:3.2.0' पर वापस जाएं

यह मेरे लिए काम किया


आप प्रोजेक्ट रखें (ऐप नहीं) बिल्ड.ग्रेडल निर्भरताएँ क्लासपैथ संस्करण कोड नया है

buildscript{
     dependencies {
        // From =>
        classpath 'com.google.gms:google-services:4.3.0'
        // To =>
        classpath 'com.google.gms:google-services:4.2.0'
        // Add dependency
        classpath 'io.fabric.tools:gradle:1.28.1'
    }
}

इसने मेरी समस्या को ठीक कर दिया .. मुझे जो कुछ भी करने की ज़रूरत थी वह बिल्ड.ग्रेड (प्रोजेक्ट) स्तर की फ़ाइल में निम्न में से मेरी google-services प्लगइन को डाउनग्रेड करना था।

implementation "android.arch.persistence.room:runtime:1.1.0"

जब प्लगइन पता लगाता है कि आप एक एपीआई का उपयोग कर रहे हैं जो अब समर्थित नहीं है, तो अब यह निर्धारित करने में सहायता के लिए अधिक विस्तृत जानकारी प्रदान कर सकता है कि उस एपीआई का उपयोग कहां किया जा रहा है। अतिरिक्त जानकारी देखने के लिए, आपको अपनी परियोजना के gradle.properties फ़ाइल में निम्नलिखित को शामिल करना होगा:

classpath 'com.android.tools.build:gradle:3.2.0'

प्रवणता में अद्यतन करना : 3.3.0

डिफ़ॉल्ट 'असेंबल' कार्य केवल सामान्य वेरिएंट पर लागू होता है। टेस्ट वेरिएंट भी जोड़ें।

//apply plugin: 'io.fabric'

कपड़े भी लागू होते हैं

android.debug.obsoleteApi=true

मुझे भी इसी मुद्दे का सामना करना पड़ा। और थोड़ी देर की खोज के बाद, मुझे यह पता चला कि Google- google-services प्लगइन के नवीनतम संस्करण (संस्करण 4.3.0) का उपयोग करने के कारण यह चेतावनी उत्पन्न हो रही है। मैं जिस तरह से अपने आवेदन में Firebase कार्यक्षमताओं के लिए इस प्लगइन का उपयोग कर रहा था। मैंने यह किया था कि बिल्ड -ग्रेड (प्रोजेक्ट) स्तर फ़ाइल में बिल्ड में अपनी google-services प्लगइन को निम्न प्रकार से डाउनग्रेड किया जाए:

gradlew sync -Pandroid.debug.obsoleteApi=true

मेरे मामले में

ext.kotlin_version = '1.2.71'

था

ext.kotlin_version = '1.3.0'

को अपडेट किया गया

classpath 'io.fabric.tools:gradle:1.25.4'

लग रहा है समस्या अब के लिए चला गया है


मेरे मामले में, यह 4.3.0 gms सेवाओं से उत्पन्न हुआ था। इसलिए मुझे इसे बदलना पड़ा:

buildscript {
    // ... repositories, etc. ...

    dependencies {
        // ...other dependencies ...
        classpath 'io.fabric.tools:gradle:1.30.0'
    }
}

मैंने इसे चलाकर पाया है:

com.google.gms:google-services:4.2.0

टर्मिनल में। Android स्टूडियो में -> टूल विंडो -> टर्मिनल पर जाएं।


मैं 3.3.0 को अद्यतन करने के बाद इस मुद्दे का सामना करता हूं

यदि आप नहीं कर रहे हैं कि त्रुटि फ़ाइल में क्या स्थिति है, तो यह कुछ प्लगइन है जो अभी भी नए एपीआई के लिए अद्यतन नहीं किया है जो इसका कारण बनता है। 3.3.0 घोषणा की "अप्रचलित एपीआई का उपयोग करते समय" बेहतर डिबग जानकारी में बताया गया है, यह जानने के लिए कि यह कौन सा प्लगइन है, निम्नलिखित करें:

  • अपनी gradle.properties फ़ाइल में 'android.debug.obirectApi = true' जोड़ें जो अधिक विवरण के साथ त्रुटि लॉग करेगा
  • फिर से कोशिश करें और लॉग विवरण पढ़ें। "समस्याग्रस्त" प्लगइन का एक निशान होगा
  • जब आप पहचान लेते हैं, तो इसे अक्षम करने का प्रयास करें और देखें कि क्या समस्या दूर हो गई है, बस सुनिश्चित करने के लिए
  • प्लगइन के github पेज पर जाएं और समस्या बनाएं जिसमें विस्तृत लॉग और स्पष्ट विवरण होगा, इसलिए आप डेवलपर्स को सभी के लिए इसे तेजी से ठीक करने में मदद करते हैं
  • धीरज रखो जब वे इसे ठीक करते हैं, या आप इसे ठीक करते हैं और पीआर को देवता बनाते हैं

आशा है कि यह दूसरों की मदद करता है


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


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

WARNING: API 'variant.getGenerateBuildConfig()' is obsolete and has been replaced with 'variant.getGenerateBuildConfigProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance

नीचे और अपडेट के रूप में स्निपेट्स देखें।

android {
    <library|application>Variants.all { variant ->
        /* Disable Generating Build config */
        // variant.generateBuildConfig.enabled = true // <- Deprecated
        variant.generateBuildConfigProvider.configure {
            it.enabled = true // Replacement
        }
    }
}

इसी तरह, 'variant.getJavaCompile()' या 'variant.javaCompile' , 'variant.getMergeResources()' या 'variant.mergeResources' । ऊपर के रूप में बदलें।

टास्क कॉन्फ़िगरेशन परिहार में अधिक जानकारी


यह सिर्फ एक चेतावनी है और यह शायद 2019 से पहले तय हो जाएगा प्लगइन अपडेट के साथ तो इसके बारे में चिंता न करें। मैं आपको अपने प्लगइन्स और ग्रेडेल के संगत संस्करणों का उपयोग करने की सलाह दूंगा।

बेहतर अनुभव और प्रदर्शन के लिए आप अपने प्लगइन संस्करण और ग्रेडेल संस्करण की जांच कर सकते हैं।

https://developer.android.com/studio/releases/gradle-plugin

एक चिकनी और चेतावनी / त्रुटि मुक्त कोड के लिए स्थिर संस्करणों का उपयोग करने का प्रयास करें।


यहां एक अस्थायी वर्कअराउंड, यदि आप कमरे का उपयोग कर रहे हैं तो बस 1.1.0 या उच्चतर में अपग्रेड करें

 dependencies {
    classpath 'com.android.tools.build:gradle:3.5.0-beta01'
    classpath 'com.novoda:bintray-release:0.8.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

यह मेरे लिए इस चेतावनी को हटा देता है।





google-fabric