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"'を追加します。
以前の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'
}
Androidは28.0.0
以降のサポートライブラリを更新しません。
これはAndroid.supportパッケージの最後の機能リリースになるでしょう、そして開発者は AndroidX 1.0.0に移行することをお勧めします 。
だからlibrary AndroidX を使ってください。
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'
}
これを追加:
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">
どうぞよろしくお願いします
私はそのオプションを使用しました:
Android Studio 3.2以降では、メニューバーから[リファクタリング]> [AndroidXに移行]を選択することで、既存のプロジェクトを素早く移行してAndroidXを使用することができます。
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デザインサポートライブラリが機能していない
AndroidXの設計サポートライブラリはimplementation 'com.google.Android.material:material:1.0.0'
です
私はすべての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
tools:replace="Android:appComponentFactory"
を削除します。注:アプリで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を使用できます。
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を使用する。
これを試して:
implementation 'com.Android.support:appcompat-v7:28.0.0-alpha1'
同様の問題がありました。 build.gradleに追加され、それは私のために働いた。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
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 Studioは、コンパイル中にこのようなエラーをすべて表示します。
適切な修正は 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
以下のコードは私と完璧に連携しました:
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'
}
ファイルgradle.propertiesを開き、次の2行を追加します。
Android.useAndroidX = true
Android.enableJetifier = true
きれいにして造る