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

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

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

瀏覽:158日期: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.在不同的庫中出現相同的so文件

pickFirst只會打包第一個遇到的沖突的so,merge(碰到沖突會合并)和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依賴的統一管理,解決依賴沖突

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

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

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

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

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

具體內容如下:

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依賴管理、去除重復依賴、忽略的方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲一区亚洲| 久久免费精品| 日产精品一区| 在线中文字幕播放| 在线观看亚洲精品福利片| 午夜在线视频一区二区区别| 99香蕉国产精品偷在线观看| 欧美成人日韩| 午夜日韩福利| 国产综合亚洲精品一区二| 日本黄色精品| 日本一二区不卡| 不卡专区在线| www.com.cn成人| 日韩一区二区三区在线免费观看| sm捆绑调教国产免费网站在线观看| 日本一二区不卡| 日韩国产激情| 激情六月综合| 老牛影视一区二区三区| 亚洲精品免费观看| 国产探花一区| 国产+成+人+亚洲欧洲在线| 中文字幕在线看片| 国户精品久久久久久久久久久不卡| 日韩精品影视| 日韩午夜免费| 婷婷综合一区| 精品亚洲a∨| 久久夜夜操妹子| 国产精品婷婷| 国产午夜久久av| 不卡专区在线| 亚洲一区免费| 国产精品丝袜在线播放| 在线天堂资源www在线污| 美女网站一区| 日韩精品五月天| 91视频久久| 免费看的黄色欧美网站| 日本va欧美va精品发布| 精品高清久久| 女同性一区二区三区人了人一 | 亚洲一区观看| 国产精品羞羞答答在线观看| 日韩电影二区| 亚洲香蕉久久| 国产激情欧美| 免费不卡中文字幕在线| 日韩视频1区| 欧洲一区二区三区精品| 一区二区三区午夜视频| 久久精品国产99国产| 日韩免费在线| 日韩一区二区三免费高清在线观看| 精品视频在线一区二区在线| 五月婷婷亚洲| 久久精品午夜| 另类国产ts人妖高潮视频| 久久中文字幕导航| 亚洲综合不卡| 精品一区二区三区亚洲| 国产一区导航| 91一区二区三区四区| 亚洲免费激情| 国产一区日韩| 日本中文字幕视频一区| 日韩精品一区二区三区免费观影| 免费人成精品欧美精品| 精品视频一区二区三区四区五区 | 影院欧美亚洲| 国产精品v一区二区三区| 欧美日韩国产一区精品一区| 国产日韩一区二区三区在线 | 日韩毛片在线| 国产午夜久久av| 欧美特黄一区| 精品国产一区二区三区av片| 中文字幕一区二区精品区| 日韩综合在线| 日韩精品久久理论片| 免费成人网www| 国产91在线精品| 日本成人在线网站| av不卡免费看| se01亚洲视频 | 色婷婷综合网| 国产探花一区在线观看| 在线亚洲自拍| 日韩精品水蜜桃| 国产成年精品| 国产剧情一区二区在线观看| 免费精品视频| 亚洲第一区色| 国产aa精品| 欧美国产中文高清| 亚洲精品日本| 中文无码久久精品| 首页亚洲欧美制服丝腿| 国产激情综合| 国产调教精品| 高清久久精品| 青青草国产精品亚洲专区无| 香蕉久久夜色精品国产| 黑丝一区二区三区| 日本不卡一区二区| 国产欧美高清视频在线| 欧美日韩国产v| 日本在线精品| 国产精品伦理久久久久久| 在线亚洲精品| 蜜臀av一区二区在线免费观看| 国产精品亚洲四区在线观看 | 久久久久国产精品一区三寸| 99成人在线| 中日韩男男gay无套| 免费黄色成人| 国产精品亚洲成在人线| 亚洲欧美不卡| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 国产麻豆一区| 麻豆成全视频免费观看在线看| 中文另类视频| 亚洲一区二区日韩| 欧美天堂一区二区| 老牛影视一区二区三区| 香蕉久久夜色精品国产| 成人精品动漫一区二区三区| 日韩精品亚洲专区| 麻豆精品在线| 亚洲精品成人图区| 国产一区二区三区探花| 麻豆国产一区| 欧美伊人影院| 久草免费在线视频| 日本综合字幕| 日韩视频久久| 精品一区二区三区亚洲| 亚州av一区| 亚洲精选成人| 日韩精品欧美激情一区二区| 日韩欧美精品| 蜜臀久久99精品久久久画质超高清| 国产精品777777在线播放| 伊人久久av| 亚洲精品观看| 成人精品亚洲| 蜜臀久久99精品久久久画质超高清| 91青青国产在线观看精品| 国产高清一区二区| 日韩精品中文字幕吗一区二区| 夜夜精品视频| 久久香蕉精品香蕉| 国产婷婷精品| 福利精品一区| 中文一区一区三区免费在线观| 国产精品久久免费视频| 国产亚洲人成a在线v网站| 亚洲一区国产| 在线精品福利| 国产精品毛片久久久| 免费高潮视频95在线观看网站| 亚洲二区视频| 亚洲精品伊人| 精品一区视频| 亚洲电影在线| 日韩精品免费观看视频| 精品精品99| 一本一本久久| 国产精品第十页| 精品国产不卡| 欧洲毛片在线视频免费观看| 亚洲另类视频| 高清av一区| 欧美专区一区二区三区| 国产精品美女在线观看直播| 日本不卡免费高清视频在线| 视频一区免费在线观看| 国产精品久久777777毛茸茸| 久久精品卡一| 亚洲精品在线二区| 亚洲三级欧美| 日韩精品电影一区亚洲| 久久久五月天| 日本三级亚洲精品| caoporn视频在线| 日韩制服丝袜av| 精品精品99| 亚洲我射av| 日韩欧美在线中字| 欧美亚洲免费| 2023国产精品久久久精品双 | 国产欧美日韩影院| 欧美日韩中文一区二区| 国产麻豆一区二区三区| 怡红院精品视频在线观看极品| 青草综合视频| 欧美日韩国产免费观看| 高清久久一区| 日韩一区中文|