[英]How to find the version of library from Gradle Dependency? Android Studio
[英]How to use Gradle's dependency tree to resolve android support library version mismatch?
催化劑
我將Android Studio升級到2.3,將Gradle插件升級到3.3
最初的問題
將Gradle插件更新為3.3后,我收到錯誤“錯誤:SDK Build Tools修訂版(23.0.3)對於項目來說太低了':mymodulename'。最低要求是25.0.0”
我嘗試將buildToolsVersion調整為25.0.2並將compileSdkVersion調整為25,以及所有com.android.support依賴項(因為它們的主要版本需要匹配compileSdkVersion)。 這個調整清除了這個問題,但后來我意識到我的應用程序還不支持Nougat所以我將compileSdkVersion減少到了我的targetSdkVersion 23.關於構建工具太低的錯誤信息仍然沒有了,所以我覺得我很清楚。
第一個依賴錯誤
在將compileSdkVersion擊倒到23之后,我嘗試重建,並看到了幾個類似於“錯誤的錯誤:(3)錯誤檢索項目的父項:找不到與給定名稱匹配的資源'android:TextAppearance.Material.Widget.Button.Borderless。有色'”。 我意識到我忘記改變我的com.android.support依賴項,使得它們的主要版本再次與較低的compileSdkVersion匹配,所以我將它們降低到23.3.0
第二個依賴錯誤
解決了第一個依賴性錯誤后,我能夠再次編譯並運行我的應用程序。 但是,在我的第一個com.android.support依賴項下面仍然存在紅色波形,錯誤說明“所有com.android.support庫必須使用完全相同的版本規范(混合版本可能導致運行時崩潰)。發現版本24.0 .0,23.3.0。例子包括com.android.support:support-v4:24.0.0和com.android.support:animated-vector-drawable:23.3.0“
我的build.gradle中沒有任何內容專門引用24.0.0,看哪:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '25.0.2'
defaultConfig {
applicationId ...
minSdkVersion 16
targetSdkVersion 23
versionCode ...
versionName ...
}
buildTypes {
debug{
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions{
//check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
dexOptions{
jumboMode true
}
}
repositories {
// You can also use jcenter if you prefer
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
//android support libs etc.
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.android.support:support-v13:23.3.0'
compile 'com.android.support:mediarouter-v7:23.3.0'
compile 'com.android.support:recyclerview-v7:23.3.0'
//snackbar support
compile 'com.android.support:design:23.3.0'
//Facebook Android SDK
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
//Facebook Audience Network SDK. Only versions 4.6.0 and above are available
compile 'com.facebook.android:audience-network-sdk:4.7.0'
//gplay services dependencies
compile 'com.google.android.gms:play-services-plus:10.0.1'
compile 'com.google.android.gms:play-services-analytics:10.0.1'
compile 'com.google.android.gms:play-services-location:10.0.1'
//provides Firebase Analytics
compile 'com.google.firebase:firebase-core:10.0.1'
//provides Google Mobile Ads SDK, a.k.a the AdMob service.
compile 'com.google.firebase:firebase-ads:10.0.1'
//dependencies required by the InMobi ads SDK
compile 'com.squareup.picasso:picasso:2.5.2'
}
apply plugin: 'com.google.gms.google-services'
依賴樹
為了弄清楚24.0.0依賴的來源,我使用'./gradlew -q dependencies mymodulename:dependencies --configuration compile'創建了一個依賴樹。 輸出是:
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:23.3.0
| +--- com.android.support:support-vector-drawable:23.3.0
| | \--- com.android.support:support-v4:23.3.0 -> 24.0.0
| | \--- com.android.support:support-annotations:24.0.0
| +--- com.android.support:animated-vector-drawable:23.3.0
| | \--- com.android.support:support-vector-drawable:23.3.0 (*)
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:support-v13:23.3.0
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:mediarouter-v7:23.3.0
| +--- com.android.support:appcompat-v7:23.3.0 (*)
| \--- com.android.support:palette-v7:23.3.0
| \--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
+--- com.android.support:design:23.3.0
| +--- com.android.support:appcompat-v7:23.3.0 (*)
| +--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
| \--- com.android.support:recyclerview-v7:23.3.0
| +--- com.android.support:support-v4:23.3.0 -> 24.0.0 (*)
| \--- com.android.support:support-annotations:23.3.0 -> 24.0.0
+--- com.facebook.android:facebook-android-sdk:4.7.0
| +--- com.parse.bolts:bolts-android:1.2.0
| \--- com.android.support:support-v4:[22,23) -> 24.0.0 (*)
+--- com.facebook.android:audience-network-sdk:4.7.0
| \--- com.google.android.gms:play-services-ads:7.8.0 -> 10.0.1
| +--- com.google.android.gms:play-services-ads-lite:10.0.1
| | \--- com.google.android.gms:play-services-basement:10.0.1
| | \--- com.android.support:support-v4:24.0.0 (*)
| +--- com.google.android.gms:play-services-base:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.android.gms:play-services-tasks:10.0.1
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-clearcut:10.0.1
| | +--- com.google.android.gms:play-services-base:10.0.1 (*)
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-gass:10.0.1
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-plus:10.0.1
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-analytics:10.0.1
| +--- com.google.android.gms:play-services-analytics-impl:10.0.1
| | +--- com.google.android.gms:play-services-base:10.0.1 (*)
| | \--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-tagmanager-v4-impl:10.0.1
| +--- com.google.android.gms:play-services-analytics-impl:10.0.1 (*)
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| \--- com.google.android.gms:play-services-basement:10.0.1 (*)
+--- com.google.android.gms:play-services-location:10.0.1
| +--- com.google.android.gms:play-services-base:10.0.1 (*)
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| \--- com.google.android.gms:play-services-tasks:10.0.1 (*)
+--- com.google.firebase:firebase-core:10.0.1
| \--- com.google.firebase:firebase-analytics:10.0.1
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.firebase:firebase-common:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.android.gms:play-services-tasks:10.0.1 (*)
| \--- com.google.firebase:firebase-analytics-impl:10.0.1
| +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| +--- com.google.firebase:firebase-iid:10.0.1
| | +--- com.google.android.gms:play-services-basement:10.0.1 (*)
| | \--- com.google.firebase:firebase-common:10.0.1 (*)
| \--- com.google.firebase:firebase-common:10.0.1 (*)
+--- com.google.firebase:firebase-ads:10.0.1
| +--- com.google.android.gms:play-services-ads:10.0.1 (*)
| \--- com.google.firebase:firebase-analytics:10.0.1 (*)
+--- com.squareup.picasso:picasso:2.5.2
\--- com.android.support:recyclerview-v7:23.3.0 (*)
(*) - dependencies omitted (listed previously)
問題
依賴樹語法'lib version - >不同的lib版'是什么意思? 具體來說,當樹說“com.android.support:support-v4:23.3.0 - > 24.0.0”時,它是什么意思?
如果我的其他一些依賴項中有com.android.support版本24.xx庫的隱式要求(請參閱com.google.android.gms:play-services-basement:10.0.1,具體取決於com.android.support:support -v4:24.0.0),為什么在之前提到的Android Studio,Gradle插件和buildToolsVersion更新之前沒有這個build.gradle拋出錯誤?
如何確保所有依賴項與compileSdkVersion 23兼容?
具體來說,當樹說“com.android.support:support-v4:23.3.0 - > 24.0.0”時,它是什么意思?
這意味着庫具有com.android.support:support-v4:23.3.0
作為嵌套依賴項,但您只是使用相同依賴項的另一個更高版本,在本例中為com.android.support:support-v4:24.0.0
。
換句話說,您的項目使用的是com.android.support:support-v4:24.0.0
為什么在之前提到的Android Studio,Gradle插件和buildToolsVersion更新之前沒有這個build.gradle拋出錯誤?
因為您已將Gradle插件更新為具有此類檢查的3.3。
如何確保所有依賴項與compileSdkVersion 23兼容?
這很難。
唯一的方法是檢查所有依賴項,但我建議您使用:
compileSdkVersion 25
targetSdkVersion 23
通常,在任何情況下都使用最新版本的buildToolsVersion
是一個好主意,獨立於所使用的支持庫的版本。
此外。 強烈建議您始終使用最新的SDK進行編譯 。 這意味着今天你應該使用compileSdkVersion
25。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.