web-dev-qa-db-ja.com

API 28(P)用のAndroidデザインサポートライブラリが機能しない

Android-P SDK環境を正常に設定しました。 Androidデザインサポートライブラリを使用しようとすると、プロジェクトビルドエラーが発生します。プロジェクト構成は次のとおりです。

IDE:3.2 Canary 17ターゲットAPI:28コンパイルAPI: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:core:1.0.0-alpha3]の属性application @ appComponentFactory value =(androidx.core.app.CoreComponentFactory)AndroidManifest.xml:22:18-86も[com.Android]にあります。 AndroidManifest.xml:22:18-91 value =(Android.support.v4.app.CoreComponentFactory)。support:support-compat:28.0.0-alpha3]推奨事項:オーバーライドするには、AndroidManifest.xml:6:5-40:19の要素に 'tools:replace = "Android:appComponentFactory"'を追加します。

59
Rahul Rastogi

以前のAPIパッケージバージョンの成果物または新しいAndroidxのどちらを使用することもできますが、両方を使用することはできません。

以前のバージョンを使用したい場合は、依存関係を

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'
}

あなたがAndroidxを使用したい場合:

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'
}
47
Danfeng

重要なアップデート

Androidは28.0.0以降のサポートライブラリを更新しません。

これはAndroid.supportパッケージの最後の機能リリースになるでしょう、そして開発者は AndroidX 1.0.0に移行することをお勧めします

だからlibrary AndroidX を使ってください。

  • しない use both プロジェクトで AndroidX をサポート。
  • あなたのライブラリモジュールや依存関係はまだサポートライブラリを持つことができます。 Androidx Jetifierがそれを処理します。
  • Alpha、beta、rcにはアプリに同梱したくないバグがある可能性があるため、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'
}
39
Khemraj

これを追加:

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="@string/action_settings">

どうぞよろしくお願いします

19
Carlos Santiago

私はそのオプションを使用しました:

Android Studio 3.2以降では、メニューバーから[リファクタリング]> [AndroidXに移行]を選択することで、既存のプロジェクトを素早く移行してAndroidXを使用することができます。

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

14

私の場合、これは完璧に動作しています。マニフェストファイル内に2行以下のコードを追加しました。

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

Manifest file Example

9
Muhaiminurabir

1.これらのコードをapp/build.gradleに追加しました。

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

2.Sdkとツールのバージョンを28に変更しました。

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

2. AndroidManifest.xmlファイルに2行追加します。

<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">

回答をありがとう@Carlos Santiago: API 28(P)用のAndroidデザインサポートライブラリが機能していない

5
Armysir

AndroidXの設計サポートライブラリはimplementation 'com.google.Android.material:material:1.0.0'です

2
Samir Elekberov

私はすべての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'

NOTED

  • androidManifestからtools:replace="Android:appComponentFactory"を削除します。
2
Lwin Myo Aung

注:アプリでcom.Android.supportとcom.google.Android.materialの依存関係を同時に使用しないでください。

をAndroidに追加する方法

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

}

アプリが現在オリジナルのデザインサポートライブラリに依存している場合は、Android Studioで提供されている[Refactor to AndroidX…]オプションを利用できます。そうすることで、新しくパッケージ化されたandroidxとcom.google.Android.materialライブラリを使用するようにアプリの依存関係とコードを更新します。

まだ新しいandroidxおよびcom.google.Android.materialパッケージに切り替える必要がない場合は、com.Android.support:design:28.0.0-alpha3依存関係を通じてMaterial Componentsを使用できます。

1
Ashutosh

Googleは新しい AndroidX の依存関係を導入しました。 AndroidXに移行する必要があります、それは簡単です。

すべての依存関係をAndroidXの依存関係に置き換えました

旧デザイン依存

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

新しいAndroidXデザイン依存

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

あなたはここにAndroidXの依存関係を見つけることができます https://developer.Android.com/jetpack/androidx/migrate


自動AndroidX移行オプション(Android Studio 3.3+でサポート)

メニューバーから[リファクタリング]> [AndroidXに移行]を選択して、既存のプロジェクトを移行してAndroidXを使用する。

1
Amir De

これを試して:

implementation 'com.Android.support:appcompat-v7:28.0.0-alpha1'
0
Park Eun Neul

同様の問題がありました。 build.gradleに追加され、それは私のために働いた。

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
0
Holiday Fun

Androidのドキュメントはこれで明確です。下のページに移動してください。下には、名前「OLD BUILD ARTIFACT」「AndroidXビルドアーティファクト」

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

これで、gradleに多くの依存関係があります。Androidxビルドアーティファクトとの依存関係を一致させ、gradleでそれらを置き換えます。

それだけでは十分ではありません。

MainActivityに移動し(すべてのアクティビティでこれを繰り返します)、ステートメント「パブリッククラスMainActivity extends AppCompatActivity」でWord AppCompactアクティビティを削除し、同じWordを再度書き込みます。ただし、今回はandroidxライブラリがインポートされます。使用(また、そのappcompact importステートメントを削除)。

また、レイアウトファイルに移動します。制約レイアウトがあるとすると、xmlファイルの最初の行の制約レイアウトにappcompactに関連するものがあることに気付くことができます。それを削除して、制約レイアウトをもう一度記述してください。

これを同じ数のアクティビティと同じ数のxmlレイアウトファイルに対して繰り返します。

ただし、心配しないでください。Android St​​udioは、コンパイル中にこのようなエラーをすべて表示します。

0
bhargav ram

適切な修正は this answerで説明されているとおりです。

これらの2行をgradle.propertiesファイルに追加して、jetifierを有効にする必要があります。

Android.useAndroidX=true
Android.enableJetifier=true

これは基本的にexchangeプロジェクトの依存関係のAndroidサポートライブラリの依存関係AndroidX-ones

gradle.propertiesが存在しない場合は、ルートプロジェクトにgradle.propertiesというファイルを作成し、上記の行を追加します。

root
|--gradle.properties
|--build.gradle
|--settings.gradle
|--app
|----build.gradle
0
dmSherazi

以下のコードは私と完璧に連携しました:

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
Hasan A Yousef

ファイルgradle.propertiesを開き、次の2行を追加します。

Android.useAndroidX = true
Android.enableJetifier = true

きれいにして造る

0
Lena Bru