国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Studio中的Gradle依賴深入講解

2019-12-12 00:31:39
字體:
來源:轉載
供稿:網友

前言

Android studio依賴項目是使用gradle管理的,依賴一個項目、一個jar包、一個工程,都可以在這里進行配置,本文將給大家詳細介紹關于Android Studio中Gradle依賴的相關內容,下面話不多說了,來一起看看詳細的介紹吧

一、不同類型的library引入方案:

1、本地Module library依賴:

通過這種方式依賴的弊端是每次都需要構建module,當module比較多時構建非常耗時,建議控制module的依賴數量,避免構建耗時

//module需要在項目根目錄下的settings.gradle中通過include引入implementation project(':librarydict')

2、本地二進制library依賴:jar和aar:

本地的jar和aar需要放在module的libs文件夾下,通過這種方式依賴的弊端是不知道jar和aar的版本號,如果要按照這種方式依賴,建議將jar/aar的名字加上版本信息,方便確認版本

依賴jar:

// 可以一條依賴引入libs下所有的jarimplementation fileTree(dir: 'libs', include: ['*.jar'])// 也可以指定依賴某一個或幾個jarimplementation files('libs/dict-v120.jar', 'libs/download-v151.jar')

依賴aar:

// 在module的build.gradle中增加如下語句: repositories { flatDir {  dirs 'libs' }}// 可以一條依賴引入libs下所有的aarimplementation fileTree(dir: 'libs', include: ['*.aar'])// 也可以指定依賴某一個aarimplementation (name: 'library-download', ext: 'aar')

3、遠程二進制library依賴:

為了安全起見,建議搭建公司內部的私有maven倉庫,統一管理依賴的library,公司內部的公共library不要使用公共的maven倉庫。通過這種方式依賴相比于前兩種方案都要更優,且配置靈活,可以根據實際需求調整

// 依賴明確的版本,標明group、name和versionimplementation group: 'com.android.demo', name: 'library-dict', version: '1.2.0'// 通常按照如下方式簡寫即可implementation 'com.android.demo:library-dict:1.2.0'// 也可以不指定版本,將version改為"+",當遠程倉庫有更新的版本后,構建時會拉取最新的版本。// 好處是可以始終依賴最新的library;弊端是有可能library的改動導致編譯不過或者功能變更不// 穩定,因為每次都需要檢查是否有最新版本,所以構建效率會低一些implementation 'com.android.demo:library-dict:+'
// 對于有多個APP,依賴內部統一SDK的情況時,可以將gradle文件放在服務器,遠程控制統一依// 賴版本,避免因為各個APP依賴的SDK版本不統一導致很難管理和維護// 遠程http://172.28.2.93/remote/library-config.gradle:ext.libraryBuildConfig = [ deps: [  "dict-library"     : 'com.android.demo:library-dict:1.2.0',  "download-library"    : 'com.android.demo:library-download:1.5.1', ]]// 項目根目錄下的build.gradle全局引入:apply "http://172.28.2.93/remote/library-config.gradle"ext { dependencies = [  "dict-library"  : libraryBuildConfig.deps.'dict-library',  "download-library" : libraryBuildConfig.deps.'download-library', ]}// 在module的build.gradle中依賴:implementation rootProject.ext.dependencies["dict-library"]implementation rootProject.ext.dependencies["download-library"]

總結如下:

二、不同依賴配置方式的區別:compile、implementation、api

從Android Gradle plugin 3.0開始,對于依賴包的配置方式,引入了implementation和api,使用Android Studio新建項目時,原來用compile的地方全部默認被替換成了implementation 比如:

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:27.1.1' compile 'com.android.support.constraint:constraint-layout:1.1.3'}

變成下面的樣子:

dependencies {  implementation fileTree(dir: 'libs', include: ['*.jar'])  implementation 'com.android.support:appcompat-v7:27.1.1'  implementation 'com.android.support.constraint:constraint-layout:1.1.3'}

網上查資料時,依賴配置方式還有:provided、api、apk、compileOnly、runtimeOnly、渠道名+Compile,差異主要在于構建內容和參與構建的時機,多樣的配置方式滿足了開發者的花樣需求,具體區別如下:

1、implementation:

依賴包中依賴的library只能在依賴包內部使用,主工程無法訪問依賴包依賴的library中的類和方法。使用場景:SDK開發中對第三方library有依賴,希望控制SDK的大小、不想因為和宿主工程引用的同一個依賴包版本不同導致編譯沖突時特別適合。

因為當依賴包依賴的library有改動時,只會重新編譯library和依賴包,不需要重新編譯宿主,所以構建速度會快一些。

對于各個渠道還可以單獨依賴屬于渠道特有的包,通過渠道名+implementation指定,比如debugImplementation、releaseImplementation、testImplementation。

2、api(原compile):

會將依賴包中依賴的其它library一同編譯和打包到apk中,宿主工程可以使用依賴包中依賴的其它library的類和方法

對于各個渠道還可以單獨依賴屬于渠道特有的包,通過渠道名+api/compile指定,比如debugApi、releaseApi、testApi

3、compileOnly(provided):

主要是為了方便程序編譯通過的,不會打包到apk中,使用場景:android系統有這個API,但編譯時需要引入才能構建通過,比如系統的APK依賴framework.jar、gson庫等

4、runtimeOnly(原apk):

只是打包到apk中,不參與編譯,不能在代碼中直接調用依賴包的代碼,否則會在編譯時出錯。一般很少使用

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广元市| 清镇市| 新丰县| 封丘县| 蒙自县| 中牟县| 谷城县| 盐城市| 萍乡市| 乐至县| 页游| 阳城县| 克东县| 牙克石市| 莱州市| 德兴市| 双鸭山市| 奉新县| 麻阳| 巫山县| 马公市| 山东省| 萨迦县| 苏州市| 建德市| 兴山县| 班戈县| 孝义市| 牙克石市| 游戏| 伊吾县| 洛扎县| 获嘉县| 和田县| 濮阳市| 南华县| 定州市| 安达市| 绍兴县| 海兴县| 兴和县|