久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何使用 gradle 為 3rd 方部門管理不同的支持庫版

How to manage different support library versions for 3rd party deps with gradle?(如何使用 gradle 為 3rd 方部門管理不同的支持庫版本?)
本文介紹了如何使用 gradle 為 3rd 方部門管理不同的支持庫版本?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一堆第三方庫,我包含在我的基礎應用程序中.我無法控制那些 3rd 方模塊包含的支持庫.這使得在我的應用程序中很難擁有相同版本的 android 支持庫.

當我可以從每個依賴項中排除某些庫時,我知道使用 gradle:

compile('com.test:lib1:1.0.0') {排除組:'com.android.support'}

但是,有大量的支持庫,并且將它們全部排除在我的每個 3rd 方庫中似乎有點矯枉過正.

有沒有更好的辦法?

閱讀這篇博文:

解決方案

這當然是可能的.在您的項目 build.gradle 文件(頂級 build.gradle 文件)中添加以下代碼塊:

ext {supportlib_version = '26.1.0'gps_version = '11.2.0'}//確保所有依賴使用相同版本的Android Support庫子項目{project.configurations.all {resolutionStrategy.eachDependency {詳細信息->if (details.requested.group == 'com.android.support'&&!details.requested.name.contains('multidex')) {details.useVersion "$supportlib_version"}如果(details.requested.group == 'com.google.android.gms'&&!details.requested.name.contains('multidex')) {details.useVersion "$gps_version"}}}}

以下代碼確保所有依賴項的com.android.support"依賴項版本都等于 $supportlib_version.'com.google.android.gms' 框架也是如此.

確保在您的模塊的 build.gradle 文件中,您也將這些版本用于您的依賴項.例如:

編譯com.android.support:support-v4:$supportlib_version"

在 中閱讀有關強制某個依賴版本的更多信息Gradle 官方文檔.

更新Google 已經分離了庫版本.因此,強制高于 15.0.0 的特定版本可能不起作用.相反,您可以允許有限范圍的版本.下面的示例允許任何高于 15.0.0 但低于 16 的版本.

gps_version = '[15.0.0, 16.0.0)'

I have a bunch of third party libs that I include in my base application. I cannot control the support library those 3rd party modules include. This makes it hard to have the same version of the android support library in my application.

I know using gradle when I can exclude certain libraries from each dependency:

compile('com.test:lib1:1.0.0') {
    exclude group: 'com.android.support'
}

However there are a ton of support libraries and excluding them all for each one of my 3rd party libraries seems like overkill.

Is there a better way?

Reading this blog post: https://www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/

It suggests:

configurations.all {
  resolutionStrategy {
    preferProjectModules()
  }
}

However when using that I still get a warning in Android Studio in my gradle file that there are multiple versions of the support library detected.

What do I do if my dependencies depend on different versions of the support library? In either case above I would be forcing the 3rd party libraries to use a specific version of the support library that they were not build with. Which version am I supposed to use? Latest support library? Min support library of all 3rd party dependencies?

Here is a minimal gradle file example showing pulling in 3rd party dependencies that each depend on their own version of the support library.

android {
    compileSdkVersion 26
    buildToolsVersion '26.0.2'

    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 17
        targetSdkVersion 25
    }
}

configurations.all {
    resolutionStrategy {
        preferProjectModules()
    }
}

dependencies {
    compile 'com.android.support:support-v13:26.0.0'
    compile 'com.test:lib1:1.0' // depends on support-v13:25.0.0
    compile 'com.test:lib2:1.0' // depends on support-v13:25.2.0
    compile 'com.test:lib3:1.0' // depends on support-v13:25.4.0
    compile 'com.test:lib4:1.0' // depends on support-v13:26.0.0
}

Android studio gives the following warning:

解決方案

This is certainly possible. In your projects build.gradle file (the top level build.gradle file) add the following code block:

ext {
    supportlib_version = '26.1.0'
    gps_version = '11.2.0'
}

//Ensure that all dependencies use the same version of the Android Support library
subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex')) {
                details.useVersion "$supportlib_version"
            }
            if (details.requested.group == 'com.google.android.gms'
                    && !details.requested.name.contains('multidex')) {
                details.useVersion "$gps_version"
            }
        }
    }
}

The following code ensures that the 'com.android.support' dependency version will be equal to $supportlib_version for all dependencies. The same for the 'com.google.android.gms' framework.

Make sure that in your module's build.gradle file you also use these versions for your dependencies. E.g.:

compile "com.android.support:support-v4:$supportlib_version"

Read more about forcing a certain dependency version in the Official Gradle documentation.

Update Google has decoupled library versions. Therefore, forcing a specific version above 15.0.0 may not work. Instead, you can allow a limited range of versions. The example below allows any version higher than 15.0.0 but lower than 16.

gps_version = '[15.0.0, 16.0.0)'

這篇關于如何使用 gradle 為 3rd 方部門管理不同的支持庫版本?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現 IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當前風味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復“意外元素lt;查詢gt;在“清單中找到錯誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風味庫的多風味應用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運行時有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 日韩高清国产一区在线 | 中文字幕av亚洲精品一部二部 | 精品久久久久久亚洲综合网 | 欧美日韩国产传媒 | 成人看片在线观看 | 久久噜 | 日韩在线国产 | 成人久久视频 | 国产一区二区高清在线 | 国产精品成人一区二区三区夜夜夜 | 国产资源在线观看 | 欧美另类视频在线 | 一区二区三区网站 | 日韩三级一区 | 91免费在线播放 | 国产91视频免费 | 激情a | 欧美视频 亚洲视频 | 国产清纯白嫩初高生在线播放视频 | 国产一区二区久久 | 成人在线中文字幕 | 精品av天堂毛片久久久借种 | 91天堂 | 国产1区2区3区 | 国产高清在线观看 | 超碰人人插 | 麻豆国产精品777777在线 | 亚洲国产精品自拍 | 最近中文字幕第一页 | www日韩| 国产精品一区在线观看你懂的 | 国产精品99久久久久久动医院 | 五十女人一级毛片 | av资源中文在线 | 日本一二三区高清 | 免费观看一级特黄欧美大片 | 98成人网 | 日韩欧美成人一区二区三区 | 日韩a| 少妇精品亚洲一区二区成人 | 午夜综合 |