日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android Gradle依賴管理、去除重復依賴、忽略的方式

瀏覽:156日期:2022-09-25 16:57:40

常用依賴

//1.直接依賴第三方開源庫,一般是托管在 jitpack 或者 jcenter implementation ’com.google.code.gson:gson:2.2.4’ implementation ’com.android.support:cardview-v7:25.0.0’ implementation ’com.android.support:design:25.0.0’ //2.直接依賴本地的aar文件,一般是在libs目錄下 implementation(name: ’LiteAVSDK_Professional_5.1.5293’, ext: ’aar’) //3.直接依賴本地的jar文件 implementation files(’libs/bdasr_V3_20170801_60da871.jar’) //4.依賴本地的model implementation project(’:wavelibrary’) implementation project(’:android-ffmpeg’)

庫工程依賴傳遞問題

1、依賴常用的基本類型有:provided和compile,provided 只在編譯生效不會打包到 apk 或 aar 中;compile 是會打包到 apk或 aar 中的(如果是庫工程的話有特殊情況,參考下面3).

2、app 工程的當前(compile+) 的依賴都會打包到 app 中

3、庫工程中:

1) jar 包:遠程依賴不會打包到 aar 中;本地依賴會;

2) aar:遠程和本地都不不會打包到 aar中.

3) 如果你要提供你的庫工程的 aar 給他人,你需要同時告訴他這個庫工程依賴的其他aar 和遠程 jar包(因為他們沒有打包到 aar 中)

4) 如果通過工程依賴(即compile project(’:lib’)的方式), 依賴是可以傳遞的,所以不需要在聲明一次依賴.

去掉重復依賴

1.第三方庫中同樣使用了implementation或者compile依賴相同的庫

implementation(’com.allenliu.versionchecklib:library:2.0.5’) { exclude group: ’com.android.support’, module: ’appcompat-v7’ exclude group: ’com.android.support.constraint’, module: ’constraint-layout’ exclude group: ’org.greenrobot’, module: ’eventbus’ exclude group: ’com.squareup.okhttp3’, module: ’okhttp’ }

2.在不同的庫中出現(xiàn)相同的so文件

pickFirst只會打包第一個遇到的沖突的so,merge(碰到?jīng)_突會合并)和exclude(直接排除匹配到的文件,不建議使用)

packagingOptions { pickFirst ’lib/arm64-v8a/libgnustl_shared.so’ pickFirst ’lib/armeabi-v7a/libgnustl_shared.so’ }

遇到這種錯誤可以通過上面方法嘗試解決

Error:Execution failed for task ‘:app:transformNativeLibsWithMergeJniLibsForDebug’. > More than one

補充知識:Gradle依賴的統(tǒng)一管理,解決依賴沖突

看見別人在用implementation rootProject.ext.dependencies['xxxx']不知道是什么意思,上網(wǎng)查了一下,原來是為了解決或者說預防gradle依賴沖突的問題。

在項目開發(fā)中我們會經(jīng)常引入多個Module,然而每個Module中又包含了V4、V7,為了升級新版本依賴包只用更改一次,我們決定采用Gradle依賴的統(tǒng)一管理,避免重復繁瑣的勞動。

記錄get到的新知識,用法如下:

1.在Project目錄下新建config.gradle文件,文件名可自定義

Android Gradle依賴管理、去除重復依賴、忽略的方式

具體內(nèi)容如下:

ext { android = [ compileSdkVersion : 27, buildToolsVersion : '27.0.0', minSdkVersion : 21, targetSdkVersion : 27, versionCode : 6, versionName : '1.2.2', renderscriptTargetApi : 21 ] version = [ supportLibraryVersion : '26.1.1', okhttpVersion : '3.9.0', retrofitVersion : '2.3.0', glideVersion : '4.0.0', butterknifeVersion : '8.8.1', fragmentationVersion : '1.1.9', ] dependencies = [ //base 'appcompat-v7' : 'com.android.support:appcompat-v7:${version['supportLibraryVersion']}', 'cardview-v7' : 'com.android.support:cardview-v7:${version['supportLibraryVersion']}', 'design' : 'com.android.support:design:${version['supportLibraryVersion']}', 'constraint-layout' : 'com.android.support.constraint:constraint-layout:1.0.2', //net 'gson' : 'com.google.code.gson:gson:2.8.2', 'okhttp' : 'com.squareup.okhttp3:okhttp:${version['okhttpVersion']}', 'logging-interceptor': 'com.squareup.okhttp3:logging-interceptor:${version['okhttpVersion']}', 'retrofit' : 'com.squareup.retrofit2:retrofit:${version['retrofitVersion']}', 'converter-gson' : 'com.squareup.retrofit2:converter-gson:${version['retrofitVersion']}', 'adapter-rxjava2' : 'com.squareup.retrofit2:adapter-rxjava2:${version['retrofitVersion']}', //dao 'greendao' : 'org.greenrobot:greendao:3.2.2', //rx 'rxjava' : 'io.reactivex.rxjava2:rxjava:2.1.5', 'rxandroid' : 'io.reactivex.rxjava2:rxandroid:2.0.1', 'rxbinding' : 'com.jakewharton.rxbinding2:rxbinding:2.1.0', 'rxpermissions' : 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar', //di 'javax_annotation' : 'org.glassfish:javax.annotation:10.0-b28', 'butterknife' : 'com.jakewharton:butterknife:${version['butterknifeVersion']}', 'butterknife-compiler' : 'com.jakewharton:butterknife-compiler:${version['butterknifeVersion']}', //multidex 'multidex' : 'com.android.support:multidex:1.0.3', //kotlin 'kotlin-stdlib' : 'org.jetbrains.kotlin:kotlin-stdlib:1.2.10', //ui test 'espresso-core' : 'com.android.support.test.espresso:espresso-core:3.0.2', 'espresso-idling-resource' : 'com.android.support.test.espresso:espresso-idling-resource:3.0.2', //unit test , 為了整合mockito和PowerMockito,mockito暫時最高只支持2.8.9 'junit' : 'junit:junit:4.12', 'mockito' : 'org.mockito:mockito-core:2.8.9', 'powermock-module-junit4' : 'org.powermock:powermock-module-junit4:1.7.4' ]}

2.在Project的build.gradle中添加

apply from: 'config.gradle'

3.在modle的build.gradle中添加引用

apply plugin: ’com.android.application’android { compileSdkVersion rootProject.ext.android['compileSdkVersion'] buildToolsVersion rootProject.ext.android['buildToolsVersion'] defaultConfig { applicationId 'json.chao.com.wanandroid' minSdkVersion rootProject.ext.android['minSdkVersion'] targetSdkVersion rootProject.ext.android['targetSdkVersion'] versionCode rootProject.ext.android['versionCode'] versionName rootProject.ext.android['versionName'] //AndroidJunitRunner必須要顯示指定在defaultConfig中,使用Gradle依賴管理無法使其生效 testInstrumentationRunner ’android.support.test.runner.AndroidJUnitRunner’ renderscriptTargetApi rootProject.ext.android['renderscriptTargetApi'] renderscriptSupportModeEnabled true // Enable RS support multiDexEnabled true vectorDrawables.useSupportLibrary = true }} dependencies { implementation fileTree(include: [’*.jar’], dir: ’libs’) //base implementation rootProject.ext.dependencies['appcompat-v7'] implementation rootProject.ext.dependencies['cardview-v7'] implementation rootProject.ext.dependencies['design'] implementation rootProject.ext.dependencies['constraint-layout'] //net implementation rootProject.ext.dependencies['gson'] implementation rootProject.ext.dependencies['okhttp'] implementation rootProject.ext.dependencies['retrofit'] implementation rootProject.ext.dependencies['converter-gson'] implementation rootProject.ext.dependencies['adapter-rxjava2'] //dao implementation rootProject.ext.dependencies['greendao'] //rx implementation rootProject.ext.dependencies['rxjava'] implementation rootProject.ext.dependencies['rxandroid'] implementation rootProject.ext.dependencies['rxbinding'] implementation rootProject.ext.dependencies['rxpermissions'] //UI測試 androidTestImplementation (rootProject.ext.dependencies['espresso-core']) { exclude group: ’com.android.support’, module: ’support-annotations’ } implementation (rootProject.ext.dependencies['espresso-idling-resource']) { exclude module: ’support-annotations’ }}

(兩個文件中有不對應的依賴方法,that’s ok, 只是粘貼代碼的時候刪除了一些,知道用法就行了)

以上這篇Android Gradle依賴管理、去除重復依賴、忽略的方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美福利一区| 免费人成黄页网站在线一区二区| 亚洲精品系列| 亚洲欧美久久精品| 日本一区中文字幕| 日韩中文字幕视频网| 亚洲精品人人| 日韩avvvv在线播放| 欧美亚洲tv| 国产日韩高清一区二区三区在线 | 久久99高清| 麻豆一区二区99久久久久| 国产精品白丝一区二区三区| 国产乱子精品一区二区在线观看| 久久不见久久见国语| 精品久久国产一区| 久久精品青草| 人人爽香蕉精品| 欧美一级二级视频| 国产精品久久久久久久免费软件| 久久精品一区| 亚洲美女久久精品| 一本一本久久| 国产欧美日韩影院| 国产h片在线观看| 99久久99久久精品国产片果冰| 欧美日韩国产在线观看网站 | 欧美日韩国产一区二区在线观看| 国产精品视频一区二区三区四蜜臂| 美女免费视频一区| 日韩高清欧美| 午夜在线精品| 国产欧美在线| 91精品一区二区三区综合| 国产精品丝袜xxxxxxx| 日本成人在线一区| 黄毛片在线观看| 国产色综合网| 国产精品15p| 亚洲v在线看| 日韩欧美在线精品| 成人在线视频区| 亚洲一区二区成人| 国产精品白浆| 激情综合激情| 日韩av一级片| 日韩中文字幕高清在线观看| 免费不卡在线观看| 黄色在线网站噜噜噜| 中文字幕一区二区精品区| 免费在线观看一区| 国产综合视频| 国产日韩欧美中文在线| 久久久精品午夜少妇| 亚洲va久久久噜噜噜久久| 国产aa精品| 狠狠干成人综合网| 欧美成a人片免费观看久久五月天| 999精品一区| 电影91久久久| 一区二区三区四区精品视频| 精品国产aⅴ| 老牛国产精品一区的观看方式| 日本强好片久久久久久aaa| sm捆绑调教国产免费网站在线观看| 六月天综合网| 成人三级高清视频在线看| 亚洲字幕久久| 欧美性感美女一区二区| 久久狠狠久久| 亚洲欧美日本日韩| 韩国久久久久久| 欧美亚洲国产日韩| 亚洲免费一区二区| 超碰99在线| 久久黄色影视| 红桃视频国产精品| 麻豆久久一区| 中文字幕日韩高清在线| 久久亚洲精品中文字幕蜜潮电影| 国产精品jk白丝蜜臀av小说| 男女性色大片免费观看一区二区 | 日韩免费在线| 亚洲美女久久| 午夜久久黄色| 久久中文在线| 青草国产精品| 日韩一区欧美二区| 欧美a级片一区| 91亚洲国产成人久久精品| 国产一级成人av| 亚洲精品黄色| 久久夜色精品| 五月天综合网站| 亚洲伦乱视频| 国精品产品一区| 国产麻豆精品| 91精品在线免费视频| 亚洲免费观看高清完整版在线观| 日韩午夜在线| 日韩欧美精品一区| 国产精品chinese| 欧美午夜三级| 青青伊人久久| 日本午夜免费一区二区| 中文字幕av亚洲精品一部二部| 日韩午夜免费| 999在线观看精品免费不卡网站| 日韩天堂在线| 欧美好骚综合网| 国产suv精品一区二区四区视频| 国产精品一区二区三区四区在线观看| 亚洲精品无吗| 无码日韩精品一区二区免费| 九九综合九九| 99久久婷婷| 精品一区亚洲| 亚洲精华国产欧美| 国产精品99精品一区二区三区∴| 久久国产精品免费一区二区三区| 日韩精品一级| 欧美精品影院| 国产精品亚洲综合色区韩国| 国产精品一区二区99| 欧美亚洲自偷自偷| 国产日韩三级| 久久久精品国产**网站| 精品一区电影| 国产盗摄——sm在线视频| 激情黄产视频在线免费观看| 免费一级欧美在线观看视频| 久久精品网址| 超级白嫩亚洲国产第一| 蜜桃精品在线| 黄色亚洲在线| 老司机精品久久| 亚洲精品亚洲人成在线观看| 亚洲精品伊人| 欧美在线首页| 成人午夜网址| 天堂中文在线播放| 欧美影院三区| 蜜臀久久久久久久| 日韩和欧美一区二区三区| 日本午夜精品一区二区三区电影| 久久精品99国产国产精| 美女视频网站久久| 婷婷激情一区| 亚洲欧洲另类| 天堂av一区| 久久中文欧美| 精品日韩毛片| 日本不卡视频一二三区| 麻豆成人综合网| 99热精品久久| 亚洲精品大全| 电影91久久久| 亚洲精品成人| 日本免费在线视频不卡一不卡二| 捆绑调教美女网站视频一区| 在线天堂资源www在线污| 婷婷亚洲五月| 国产亚洲字幕| 成人羞羞在线观看网站| 一区二区亚洲精品| 国产精品亚洲欧美日韩一区在线 | 国产日韩综合| 国产免费播放一区二区| 欧美不卡高清一区二区三区| 欧美中文字幕| 麻豆国产欧美一区二区三区| 韩国精品主播一区二区在线观看| 亚洲经典在线| 国产精品极品在线观看| 久久久精品日韩| 日本va欧美va瓶| 欧洲精品一区二区三区| 亚洲精品影院在线观看| 美女av在线免费看| 亚洲精品成人一区| 日韩免费在线| 欧美亚洲tv| 国产字幕视频一区二区| 欧美性www| 婷婷成人基地| 久久av中文| 欧美在线资源| 久久精品国产成人一区二区三区| 亚洲欧美日韩国产一区| 蜜桃精品视频| 久久国产精品毛片| 91视频一区| 欧美亚洲免费| 欧美日韩激情| 国产成人免费| 五月国产精品| 国产国产精品| 国产一区二区三区四区五区| 亚洲精品乱码| 亚洲精品99|