Android Studioを Canary 3 から Canary 4 に更新した後、ビルド時に次のエラーがスローされます。
Androidの依存関係 'com.Android.support:support-support-v4'はコンパイル(25.2.0)とランタイム(26.0.0-beta2)のクラスパスでバージョンが異なります。あなたは手動でDependencyResolutionを介して同じバージョンを設定するべきです。
私はプロジェクト全体を完全に検索しましたが、バージョン25.1.0
は使用されている場所ではありません。
App-build.gradle
Android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
applicationId "com.xxx.xxxx"
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
debug {
debuggable true
}
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
lintOptions {
abortOnError false
}
}}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation project(':core')
implementation com.google.Android.gms:play-services-gcm:9.0.0'
implementation('com.crashlytics.sdk.Android:crashlytics:2.6.5@aar') {
transitive = true
}
implementation 'com.Android.support:multidex:1.0.1'
implementation 'com.flurry.Android:analytics:7.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
implementation 'com.jakewharton:butterknife:8.6.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
}
Library-build.gradle:
apply plugin: 'com.Android.library'
Android {
compileSdkVersion 26
buildToolsVersion '26.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation files('libs/model.jar')
testImplementation 'junit:junit:4.12'
implementation 'com.Android.support:percent:26.0.0-beta2'
implementation 'com.Android.support:appcompat-v7:26.0.0-beta2'
implementation 'com.Android.support:support-core-utils:26.0.0-beta2'
implementation 'com.squareup.retrofit2:retrofit:2.0.2'
implementation 'com.squareup.picasso:picasso:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
implementation 'com.squareup.okhttp3:logging-interceptor:3.2.0'
implementation 'uk.co.chrisjenx:calligraphy:2.2.0'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.Android.support:design:26.0.0-beta2'
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
注: / Canary 3でプロジェクトはうまく構築されていた
あなたのbuildscript(build.gradle root)でこのコードを使ってください:
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "version which should be used - in your case 26.0.0-beta2"
}
}
}
}
私は私の問題を解決したもの、同じエラーがありました。私の ライブラリ の代わりにコンパイルや実装を使うのではなく "api"を使います。だから最後に私の依存関係:
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
api files('libs/model.jar')
testApi 'junit:junit:4.12'
api 'com.Android.support:percent:26.0.0-beta2'
api 'com.Android.support:appcompat-v7:26.0.0-beta2'
api 'com.Android.support:support-core-utils:26.0.0-beta2'
api 'com.squareup.retrofit2:retrofit:2.0.2'
api 'com.squareup.picasso:picasso:2.4.0'
api 'com.squareup.retrofit2:converter-gson:2.0.2'
api 'com.squareup.okhttp3:logging-interceptor:3.2.0'
api 'uk.co.chrisjenx:calligraphy:2.2.0'
api 'com.google.code.gson:gson:2.2.4'
api 'com.Android.support:design:26.0.0-beta2'
api 'com.github.PhilJay:MPAndroidChart:v3.0.1'
}
あなたはこのリンクで "api"、 "implementation"についての詳細な情報を見つけることができます https://stackoverflow.com/a/44493379/3479489
ここで説明されているように、プロジェクトに対して正しいgradle -q dependencies
コマンドを実行することで、どの依存関係が奇妙なバージョンを推移的な依存関係として引き込んでいるかを正確に確認できるはずです。
https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
何を引き込んでいるのかを突き止めたら、次のようにして、gradleファイル内のその特定の依存関係に除外を追加できます。
implementation("XXXXX") {
exclude group: 'com.Android.support', module: 'support-compat'
}
多くの時間を過ごした後、Androidについて私よりも多くのことを知っている友人から助けを得ました:app/build.gradle
Android {
compileSdkVersion 27
// org.gradle.caching = true
defaultConfig {
applicationId "com.cryptoviewer"
minSdkVersion 16
targetSdkVersion 23
versionCode 196
versionName "16.83"
// ndk {
// abiFilters "armeabi-v7a", "x86"
// }
}
と依存関係
dependencies {
implementation project(':react-native-camera')
//...
implementation "com.Android.support:appcompat-v7:26.1.0" // <= YOU CARE ABOUT THIS
implementation "com.facebook.react:react-native:+" // From node_modules
}
build.gradleで
allprojects {
//...
configurations.all {
resolutionStrategy.force "com.Android.support:support-v4:26.1.0"
}
gradle.propertiesに
Android.useDeprecatedNdk=true
Android.enableAapt2=false
org.gradle.jvmargs=-Xmx4608M
私の答えは、これを私のbuild.gradle
ファイルにも追加することでした。
configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
}
私の場合、解決戦略をconfigurations.all { .. }
ブロックで囲むことが不可欠でした。 configurations.all
ブロックを直接app/build.gradle
ファイルに配置しました(つまり、configurations.all
は他にネストされていませんでした)。
これは私のために働いた:
依存関係セクションのapp/build.gradle
に次の行を追加します。
implementation "com.Android.support:appcompat-v7:27.1.0"
私の場合は:27.1.1
ライブラリプロジェクトで、 compileSdkVersion および targetSdkVersion のバージョンをアプリケーションと同じレベルにします。
Android {
compileSdkVersion 28
defaultConfig {
consumerProguardFiles 'proguard-rules.txt'
minSdkVersion 14
targetSdkVersion 28
}
}
すべての依存関係も同じレベルにする
私はEddiが上で述べたことに従うことによってそれを解決しました、
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "26.1.0"
}
}
私の矛盾している依存関係を実装からapiに切り替えることでうまくいきます。これは考え方の違いを説明する良い記事です。
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
編集する
これも私の依存関係の解決です。
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.Android.support'
&& !details.requested.name.contains('multidex')) {
details.useVersion "28.0.0"
}
if (details.requested.group == 'com.google.Android.gms'
&& details.requested.name.contains('play-services-base')) {
details.useVersion "15.0.1"
}
if (details.requested.group == 'com.google.Android.gms'
&& details.requested.name.contains('play-services-tasks')) {
details.useVersion "15.0.1"
}
}
}
}
同期後にうまく機能した//api 'com.google.Android.gms:play-services-ads:15.0.1'
をコメントアウトします
Android/build.gradleファイルのgradle依存関係をアップグレードすることで解決しました:classpath 'com.Android.tools.build:gradle:3.3.1'(以前はバージョン3.2でした。
Build.gradleファイルにこれらの行を追加するだけです。
resolutionStrategy.force "com.Android.support:support-media-compat:26.0.0-beta2"
resolutionStrategy.force "com.Android.support:support-v4:26.0.0-beta2"
2019年にこの依存関係の問題が発生した場合は、Android Studioを3.4以降に更新してください。