chất xúc tácLàm thế nào để sử dụng cây phụ thuộc của Gradle để giải quyết phiên bản thư viện hỗ trợ Android không khớp?
tôi nâng cấp Android Studio để 2.3, và Gradle plugin để 3.3
vấn đề ban đầu
Sau khi cập nhật các plugin Gradle đến 3.3, tôi nhận được báo lỗi "Lỗi: Bản sửa đổi Công cụ xây dựng SDK (23.0.3) quá thấp đối với dự án ': mymodulename'. Yêu cầu tối thiểu là 25.0.0 "
Tôi đã thử điều chỉnh cả buildToolsVersion thành 25.0.2 và compileSdkVers ion đến 25, cùng với tất cả các phụ thuộc com.android.support (vì phiên bản chính của chúng cần khớp với compileSdkVersion). Điều chỉnh đó đã giải quyết vấn đề này, nhưng sau đó tôi nhận ra rằng ứng dụng của tôi không hỗ trợ Nougat, vì vậy tôi đã giảm compileSdkVersion xuống targetSdkVersion của 23. Thông báo lỗi về các công cụ xây dựng quá thấp vẫn bị mất, vì vậy tôi nghĩ rằng tôi đã rõ ràng .
phụ thuộc đầu tiên lỗi
Sau khi gõ compileSdkVersion xuống 23 Tôi cố gắng để xây dựng lại, và thấy một số lỗi tương tự như "Lỗi: (3) Lỗi lấy mẹ cho mặt hàng: Không có nguồn phát hiện ra rằng phù hợp với trao name 'android: TextAppearance.Material.Widget.Button.Borderless.Colored' ". Tôi nhận ra rằng tôi đã quên để thay đổi com.android.support phụ thuộc của tôi như vậy mà phiên bản chính của họ phù hợp với các compileSdkVersion thấp hơn nữa, vì vậy tôi tình cờ gặp chúng xuống 23.3.0
lỗi phụ thuộc thứ hai
Sau giải quyết lỗi phụ thuộc đầu tiên, tôi đã có thể biên dịch và chạy lại ứng dụng của mình. Tuy nhiên, vẫn còn có một đốm nhỏ màu đỏ bên dưới phụ thuộc com.android.support đầu tiên của tôi, với lưu ý lỗi "tất cả thư viện com.android.support phải sử dụng cùng một đặc tả phiên bản chính xác (phiên bản trộn có thể dẫn đến lỗi thời gian chạy). .0, 23.3.0 Các ví dụ bao gồm com.android.support:support-v4:24.0.0 và com.android.support:animated-vector-drawable:23.3.0 "
Không có gì trong build.gradle của tôi tham chiếu 24.0.0, kìa:
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'
cây phụ thuộc
để f igure ra nơi phụ thuộc 24.0.0 đến từ, tôi tạo ra một cây phụ thuộc bằng cách sử dụng './gradlew -q dependencies mymodulename: dependencies --configuration compile'. Đầu ra là:
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)
các câu hỏi
không cây phụ thuộc cú pháp 'phiên bản lib -> khác nhau lib phiên bản' nghĩa là gì? Cụ thể, khi cây nói "com.android.support:support-v4:23.3.0 -> 24.0.0", nghĩa là gì?
Nếu có yêu cầu ẩn đối với thư viện 24.xx phiên bản com.android.support trong một số phụ thuộc khác của tôi (xem com.google.android.gms: play-services-basement: 10.0.1 tùy thuộc vào com. android.support:support-v4:24.0.0), tại sao không xây dựng này.lỗi ném gradle trước Android Studio, plugin Gradle và bản cập nhật buildToolsVersion được đề cập trước đó?
Làm cách nào để đảm bảo tất cả các phụ thuộc của tôi tương thích với compileSdkVersion 23?
Điều gì sẽ xảy ra nếu bạn biên dịch với 25 nhưng sử dụng thư viện hỗ trợ phiên bản 23? –
Bạn nên đăng cây phụ thuộc dưới dạng văn bản. Đánh dấu nó và nhấn Ctrl-K để giữ nguyên định dạng. Phím tắt này thêm các khoảng trống cần thiết cho một khối mã. –
Hãy nhớ rằng 'compileSdkVersion' không thay đổi hành vi ứng dụng của bạn - đó sẽ là' targetSdkVersion' như được giải thích trong [bài đăng trên blog này] (https://medium.com/google-developers/picking-your-compilesdkversion- minsdkversion-targetsdkversion-a098a0341ebd). Bạn nên luôn biên dịch với phiên bản Android mới nhất, ngay cả khi bạn không nhắm mục tiêu nó. – ianhanniballake