এপিআই 28 (পি) এর জন্য অ্যান্ড্রয়েড ডিজাইন সমর্থন লাইব্রেরি কাজ করছে না


106

আমি অ্যান্ড্রয়েড-পি এসডিকে পরিবেশ সফলভাবে কনফিগার করেছি। যখন আমি অ্যান্ড্রয়েড ডিজাইন সমর্থন লাইব্রেরিটি ব্যবহার করার চেষ্টা করি তখন আমি প্রকল্প তৈরির ত্রুটির মুখোমুখি হই। প্রকল্পের কনফিগারেশনগুলি হ'ল:

আইডিই: 3.2 ক্যানারি 17 টার্গেট এপিআই: 28 সংকলন এপিআই: 28

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.app.navigationpoc"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

    implementation 'com.android.support:design:28.0.0-alpha3'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
}

এবং বিল্ড ব্যর্থ ত্রুটি হ'ল:

ম্যানিফেস্ট একীকরণ ব্যর্থ হয়েছে: [অ্যান্ড্রয়েডএক্সআর कोर থেকে মূল অ্যাপ্লিকেশন @ অ্যাপকোম্পোনফ্যাক্টরি মান = (androidx.core.app.CoreComp घटक ফ্যাক্টরি): অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল: 22: 18-86 এছাড়াও উপস্থিত রয়েছে .support: সমর্থন-কম্পাট: 28.0.0-alpha3] AndroidManLive.xml: 22: 18-91 মান = (android.support.v4.app.CoreCompenderF কারিগরি)। পরামর্শ: ওভাররাইড করতে অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল: 6: 5-40: 19 এ উপাদানটিতে 'সরঞ্জামগুলি: প্রতিস্থাপন = "অ্যান্ড্রয়েড: অ্যাপকোম্পোনফ্যাক্টরি" "যুক্ত করুন।


আপনি কি এই উত্তরটি যাচাই করেছেন: stackoverflow.com/a/54825603/1318946
প্রতীক বুটানি

উত্তর:


89

আপনি হয় শিল্পকর্মগুলির পূর্ববর্তী API প্যাকেজ সংস্করণ বা নতুন অ্যান্ড্রয়েডেক্স ব্যবহার করতে পারেন, দুটোই কখনও নয়।

আপনি যদি পূর্ববর্তী সংস্করণটি ব্যবহার করতে চান তবে আপনার নির্ভরতাগুলি এর সাথে প্রতিস্থাপন করুন

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.android.support:design:28.0.0-alpha3'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
}

আপনি যদি অ্যান্ড্রয়েডএক্স ব্যবহার করতে চান:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

    implementation 'com.google.android.material:material:1.0.0-alpha3'
    implementation 'androidx.cardview:cardview:1.0.0-alpha3'
}

2
এই উত্তরটি গ্রহণযোগ্য হওয়া উচিত। মাঝারি
রাওয়া

কেন এটা করা হয় comপ্রতিস্থাপন করা হয় নি materialমধ্যে implementation?
RoCk RoCk

58

গুরুত্বপূর্ণ আপডেট

অ্যান্ড্রয়েড এর পরে সমর্থন লাইব্রেরি আপডেট করবে না 28.0.0

এটি অ্যান্ড্রয়েড.সপোর্ট প্যাকেজিংয়ের আওতাধীন সর্বশেষ বৈশিষ্ট্য প্রকাশ হবে এবং বিকাশকারীরা অ্যান্ড্রয়েডএক্স 1.0.0 এ স্থানান্তরিত করতে উত্সাহিত করা হবে ।

সুতরাং গ্রন্থাগার অ্যান্ড্রয়েডএক্স ব্যবহার করুন ।

  • প্রকল্পে সমর্থন এবং অ্যান্ড্রয়েডএক্স উভয়ই ব্যবহার করবেন না
  • আপনার গ্রন্থাগার মডিউল বা নির্ভরতা এখনও সমর্থন লাইব্রেরি থাকতে পারে। অ্যান্ড্রয়েডএক্স জেটিফায়ার এটি পরিচালনা করবে।
  • স্থিতিশীল সংস্করণ androidxবা যেকোন লাইব্রেরি ব্যবহার করুন , কারণ আলফা, বিটা, আরসি-তে এমন বাগ থাকতে পারে যা আপনি আপনার অ্যাপ্লিকেশন দিয়ে শিপ করতে চান না।

তোমার ক্ষেত্রে

dependencies {
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

    implementation 'com.google.android.material:material:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
}

এটি অদ্ভুত, আমার প্রকল্পটি দীর্ঘকাল থেকেই পি-তে ছিল, তবে আমি যখন নির্মাণ করি তখন এটি সমর্থন লাইব্রেরির ত্রুটিগুলি দেওয়া শুরু করে। আমি এখানে কি অনুপস্থিত কিছু আছে?
তালহা

এটি এখন সাধারণ ত্রুটি যা আমরা সকলেই এখন একদিন মুখোমুখি হয়েছি, চলমান প্রকল্পে প্রতি কয়েকদিন পরেই আমি এর মুখোমুখি। কেবল অবৈধ ক্যাশে করুন এবং পুনরায় চালু করুন।
খেমরাজ

@ তালা মেনু থেকে চেষ্টা করুন বিল্ড> প্রজেক্টটি সাফ করুন তারপরে বিল্ড> প্রজেক্টটি তৈরি করুন, কখনও কখনও এটি যথেষ্ট, যদি না হয় তবে অকার্যকর ক্যাশে করুন এবং পুনঃসূচনা করুন, কারণ অকার্যকর ক্যাশে এবং পুনঃসূচনাটি প্রচুর সময় নেয় এবং সমস্ত প্রকল্পের জন্য ক্যাশে সাফ করে।
জন

43

এটি যুক্ত করুন:

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

আপনার প্রকাশ অ্যাপ্লিকেশন

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    tools:replace="android:appComponentFactory"
    android:appComponentFactory="whateverString">

আশা করি এটা সাহায্য করবে


তোমার কী আছে @string/action_settings?
অ্যালিটন অলিভিরা

আমার একটি সমস্যা ছিল: ওএস স্বতন্ত্র পথের সাথে একাধিক ফাইল পাওয়া গেছে 'মেটা-আইএনএফ / androidx.core_core.version
অ্যালিটন অলিভিরা

2 টি লাইন যুক্ত করার পরে ত্রুটি: * What went wrong: Execution failed for task ':app:generateDebugBuildConfig'. > org.xml.sax.SAXParseException; systemId: file:/C:/D/code/js/emps_app/android/app/src/main/AndroidManifest.xml; lineNumber: 14; columnNumber: 52; The prefix "tools" for attribute "tools:replace" associated with an element type "application" is not bound.
user938363

2
আপনি কি অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএল শিরোলেখগুলির মধ্যে xmlns: সরঞ্জামস = " স্কিমাস.অ্যান্ড্রয়েড / টলস " যুক্ত করেছেন?
কার্লোস সান্টিয়াগো

2
অ্যান্ড্রয়েড / <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
এসসিআর

16

আমি এই বিকল্পটি ব্যবহার করেছি:

অ্যান্ড্রয়েড স্টুডিও ৩.২ এবং উচ্চতর সহ, আপনি মেনু বার থেকে অ্যান্ড্রয়েডএক্সে মাইগ্রেট নির্বাচন করে অ্যান্ড্রয়েডএক্স ব্যবহার করার জন্য একটি বিদ্যমান প্রকল্পটি দ্রুত স্থানান্তর করতে পারেন।

https://developer.android.com/jetpack/androidx/migrate


9

গুগল নতুন অ্যান্ড্রয়েডএক্স নির্ভরতা চালু করেছে । আপনার অ্যান্ড্রয়েডএক্সে স্থানান্তর করতে হবে, এটি সহজ it's

আমি সমস্ত নির্ভরতা AndroidX নির্ভরতাগুলিতে প্রতিস্থাপন করেছি

পুরানো নকশা নির্ভরতা

implementation 'com.android.support:design:28.0.0'

নতুন অ্যান্ড্রয়েডএক্স ডিজাইন নির্ভরতা

implementation 'com.google.android.material:material:1.0.0-rc01'

আপনি এখানে অ্যান্ড্রয়েডএক্স নির্ভরতা পেতে পারেন https://developer.android.com/jetpack/androidx/migrate


স্বয়ংক্রিয় অ্যান্ড্রয়েডএক্স মাইগ্রেশন বিকল্প (অ্যান্ড্রয়েড স্টুডিও 3.3+ এ সমর্থিত)

মেনু বার থেকে অ্যান্ড্রয়েডএক্সে মাইগ্রেট নির্বাচন করে অ্যান্ড্রয়েডএক্স ব্যবহার করতে একটি বিদ্যমান প্রকল্পটি স্থানান্তর করুন।


1
বাস্তবায়ন 'com.google.android.matory: উপাদান: 1.1.0-alpha05' এটি নতুন সংস্করণ
হিতেশ তারবুনদিয়া

'আমদানি android.support.design.widget.TabLayout' এর পরিবর্তে কী রাখবেন; ?
তেমিরবেক

6

1. এই অ্যাপ্লিকেশন / বিল্ড.gradle এ এই কোডগুলি যুক্ত করুন:

configurations.all {
   resolutionStrategy.force 'com.android.support:support-v4:26.1.0' // the lib is old dependencies version;       
}

২. রূপান্তরিত এসডিকে এবং সরঞ্জামগুলির সংস্করণটি 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

২.আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে আপনার দুটি লাইন যুক্ত করা উচিত:

<application
    android:name=".YourApplication"
    android:appComponentFactory="anystrings be placeholder"
    tools:replace="android:appComponentFactory"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">

উত্তরের জন্য ধন্যবাদ @ কার্লোস সান্টিয়াগো: এপিআই 28 (পি) কাজ করছে না এর জন্য অ্যান্ড্রয়েড ডিজাইন সমর্থন লাইব্রেরি


এই সমাধানটি ভবিষ্যতের অনুগত নয়, কারণ আপনার এখনই অ্যান্ড্রয়েডএক্স ব্যবহার করা উচিত। পুরানো অ্যাপ্লিকেশনগুলি প্রকাশিত হয় এখনই আপগ্রেড করা উচিত। যদি অনেকগুলি পুনরায় কাজ করা হয় তবে এখনও এই পরিবর্তনগুলি করা উচিত।
অভিনব সাক্সেনা

@ অভিনব সাক্সেনা আপনি ঠিক বলেছেন, পুরানো এসডিকে সংস্করণ দিয়ে এই সমস্যার সমাধান করার চেয়ে আমাদের প্রকল্পটি 28 টিতে উন্নত করা উচিত। :)
কোডিও

এটি গ্রহণযোগ্য উত্তর, প্রচুর পরামর্শের পরেও কিছুই আমাকে সাহায্য করেনি, তবে এটি কনফিগারেশন হিসাবে আমাকে সহায়তা করেছে all সমস্ত}}} আপনি আমার দিন বাঁচিয়েছেন, ধন্যবাদ।
নূর হোসেন


4

গ্রেড ফাইল তৈরি করুন এবং এগুলিতে এই দুটি লাইন যুক্ত করুন:

android.useAndroidX = true
android.enableJetifier = true

পরিষ্কার এবং বিল্ড


1
ইউজএন্ড্রয়েডএক্স ব্যবহারকারীকে অ্যান্ড্রয়েডকে সংকলকটি বলে। পুরানো অ্যান্ড্রয়েড সমর্থন প্যাকেজের পরিবর্তে ফাইলগুলি
লেনা ব্রু

এটি স্টুডিও ৩.২ এবং তদূর্ধের অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করার নির্দেশ দেয়। অ্যান্ড্রয়েডএক্সে স্থানান্তরিত সমস্ত লাইব্রেরি নির্ভরতা অনুসারে সংশোধন করা হবে।
অভিনব সাক্সেনা

3

দ্রষ্টব্য: আপনার একই সময়ে আপনার অ্যাপ্লিকেশনে com.android.support এবং com.google.android.matory নির্ভরতা ব্যবহার করা উচিত নয়।

আপনার বিল্ডড্র্যাডল (অ্যাপ) ফাইলটিতে অ্যান্ড্রয়েডের জন্য উপাদান উপাদান যুক্ত করুন

dependencies {
    // ...
    implementation 'com.google.android.material:material:1.0.0-beta01'
    // ...
  }

যদি বর্তমানে আপনার অ্যাপ্লিকেশনটি মূল ডিজাইন সমর্থন লাইব্রেরির উপর নির্ভর করে তবে আপনি অ্যান্ড্রয়েড স্টুডিও দ্বারা সরবরাহিত অ্যান্ড্রয়েডএক্স ... রিফ্যাক্টরটি ব্যবহার করতে পারেন। এটি করা আপনার নতুন অ্যাপ্লিকেশনটির নির্ভরতা এবং সদ্য প্যাকেজড অ্যান্ড্রয়েড এবং com.google.android.matory গ্রন্থাগারগুলি ব্যবহার করার কোড আপডেট করবে।

আপনি যদি এখনও নতুন অ্যান্ড্রয়েড এবং com.google.android.matory প্যাকেজগুলিতে স্যুইচ করতে না চান তবে আপনি com.android.support:design:28.0.0-alpha3 নির্ভরতার মাধ্যমে উপাদান উপাদান ব্যবহার করতে পারেন।


3

প্রথমত, আপনার গ্রেড.প্রোপার্টি দেখতে হবে এবং এই মানগুলি সত্য হতে হবে । এগুলি দেখতে না পারলে আপনাকে লিখতে হবে।

android.useAndroidX=true
android.enableJetifier=true

এর পরে আপনি আপনার বিল্ড.gradle (মডিউল: অ্যাপ) এ অ্যান্ড্রয়েডএক্স নির্ভরতা ব্যবহার করতে পারেন । এছাড়াও, আপনাকে কম্পাইল এসডি কে ভার্সন এবং টার্গেট ভার্সন চেক করতে হবে । তাদের সর্বনিম্ন 28 হওয়া উচিত For উদাহরণস্বরূপ আমি 29 ব্যবহার করছি।

সুতরাং, একটি অ্যান্ড্রয়েডেক্স নির্ভরতার উদাহরণ:

implementation 'androidx.cardview:cardview:1.0.0'

তবে সাবধান থাকবেন কারণ কার্ডভিউ নির্ভরতার মতো সবকিছু অ্যান্ড্রয়েড থেকে শুরু হয় না । উদাহরণস্বরূপ, পুরানো নকশা নির্ভরতা হ'ল:

implementation 'com.android.support:design:27.1.1'

তবে নতুন ডিজাইনের নির্ভরতা হ'ল:

implementation 'com.google.android.material:material:1.1.0'

সুতরাং, আপনাকে সন্ধান করে মনোযোগ সহকারে পড়তে হবে। শুভ কোড।

@canerkaseler


2

আমি সব প্রতিস্থাপন যে অবস্থা ক্রস androidx.*থেকে appropiate package name

আপনার লাইন পরিবর্তন

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

প্রতি

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

সুপরিচিত

  • tools:replace="android:appComponentFactory"অ্যান্ড্রয়েড ম্যানিফেস্ট থেকে সরান

0

নীচের কোডটি আমার সাথে পুরোপুরি কাজ করেছে:

dependencies {
    api 'com.android.support:design:28.0.0-alpha3'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test:runner:1.1.0-alpha2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2'
}


0

অ্যান্ড্রয়েড ডকুমেন্টেশন page.Underneath নীচে this.Go স্পষ্ট, সেখানে নামের সাথে দুটি কলাম হয় "পুরানো বিল্ড হস্তনির্মিত বস্তু" এবং "AndroidX বিল্ড হস্তনির্মিত বস্তু"

https://developer.android.com/jetpack/androidx/migrate

গ্রেডে এখন আপনার অনেক নির্ভরতা রয়েছে Android অ্যান্ড্রয়েডএক্সের সাথে কেবল শিল্পকর্মগুলি তৈরি করা এবং গ্রেডগুলিতে প্রতিস্থাপন করুন।

এটি যথেষ্ট হবে না।

আপনার মেইনএ্যাকটিভিটিতে যান (সমস্ত ক্রিয়াকলাপের জন্য এটি পুনরাবৃত্তি করুন) এবং "পাবলিক ক্লাস মেইনএকটিভিটি অ্যাপকম্প্যাটঅ্যাক্টিভিটি প্রসারিত করে" বিবৃতিতে অ্যাপকম্প্যাক্ট কার্যকলাপ শব্দটি সরান এবং আবার একই শব্দটি লিখুন ut তবে এবার অ্যান্ড্রয়েড লাইব্রেরি আমদানি হয়ে যায় U এখন অ্যাপ্লিকম্প্যাক্ট সমর্থন ফাইলটি আমদানি হয়ে গেছে এবং ব্যবহৃত (এছাড়াও, যে অ্যাপকম্প্যাক্ট আমদানি বিবৃতি অপসারণ)।

এছাড়াও, আপনার বিন্যাস ফাইলটিতে যান। ধরা যাক আপনার একটি সীমাবদ্ধ বিন্যাস আছে, তবে আপনি খেয়াল করতে পারেন যে এক্সএমএল ফাইলের প্রথম লাইনের সীমাবদ্ধ বিন্যাসে অ্যাপকম্প্যাক্ট সম্পর্কিত কিছু রয়েছে just সুতরাং কেবল এটি মুছুন এবং আবার সীমাবদ্ধ লেআউটটি লিখুন ut তবে এখন অ্যান্ড্রয়েড সম্পর্কিত সীমাবদ্ধ বিন্যাস যুক্ত হয়ে যায়।

এটি অনেকগুলি ক্রিয়াকলাপ এবং যতগুলি এক্সএমএল লেআউট ফাইলের জন্য পুনরুক্ত করুন ..

তবে চিন্তা করবেন না: সংকলনের সময় অ্যান্ড্রয়েড স্টুডিও এ জাতীয় সমস্ত সম্ভাব্য ত্রুটি প্রদর্শন করে।


0

একই সমস্যা ছিল। Build.gradle এ যুক্ত হয়েছে এবং এটি আমার পক্ষে কাজ করেছে।

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

0

যদি আপনি অ্যান্ড্রয়েডএক্সে স্থানান্তর না করে এই সমস্যাটি সমাধান করতে চান তবে (আমি এটির প্রস্তাব দিই না)

এই ম্যানিফেস্টটি সংযুক্তির সমস্যাটি অ্যান্ড্রয়েডএক্স ব্যবহার করে আপনার অন্যতম নির্ভরতা সম্পর্কিত।

আপনার এই নির্ভরতার প্রকাশ সংস্করণ হ্রাস করতে হবে। আমার ক্ষেত্রে:

আমি গুগল বা ফায়ারবেস ব্যবহার করছিলাম

api 'com.google.android.gms:play-services-base:17.1.0'

সমর্থন লাইব্রেরিতে ব্যবহার করার জন্য আমাকে এটি 15.0.1 কমাতে হবে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.