最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android Studio中的Gradle依賴深入講解

 更新時間:2018年09月13日 15:30:28   作者:張明云  
Android Studio由于使用了gradle的進行項目構(gòu)建,使我們開發(fā)app方便很多,下面這篇文章主要給大家介紹了關(guān)于Android Studio中Gradle依賴的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

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

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

1、本地Module library依賴:

通過這種方式依賴的弊端是每次都需要構(gòu)建module,當(dāng)module比較多時構(gòu)建非常耗時,建議控制module的依賴數(shù)量,避免構(gòu)建耗時

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

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

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

依賴jar:

// 可以一條依賴引入libs下所有的jar
implementation fileTree(dir: 'libs', include: ['*.jar'])

// 也可以指定依賴某一個或幾個jar
implementation files('libs/dict-v120.jar', 'libs/download-v151.jar')

依賴aar:

// 在module的build.gradle中增加如下語句: 
repositories {
 flatDir {
  dirs 'libs'
 }
}

// 可以一條依賴引入libs下所有的aar
implementation fileTree(dir: 'libs', include: ['*.aar'])

// 也可以指定依賴某一個aar
implementation (name: 'library-download', ext: 'aar')

3、遠程二進制library依賴:

為了安全起見,建議搭建公司內(nèi)部的私有maven倉庫,統(tǒng)一管理依賴的library,公司內(nèi)部的公共library不要使用公共的maven倉庫。通過這種方式依賴相比于前兩種方案都要更優(yōu),且配置靈活,可以根據(jù)實際需求調(diào)整

// 依賴明確的版本,標明group、name和version
implementation group: 'com.android.demo', name: 'library-dict', version: '1.2.0'

// 通常按照如下方式簡寫即可
implementation 'com.android.demo:library-dict:1.2.0'

// 也可以不指定版本,將version改為"+",當(dāng)遠程倉庫有更新的版本后,構(gòu)建時會拉取最新的版本。
// 好處是可以始終依賴最新的library;弊端是有可能library的改動導(dǎo)致編譯不過或者功能變更不
// 穩(wěn)定,因為每次都需要檢查是否有最新版本,所以構(gòu)建效率會低一些
implementation 'com.android.demo:library-dict:+'
// 對于有多個APP,依賴內(nèi)部統(tǒng)一SDK的情況時,可以將gradle文件放在服務(wù)器,遠程控制統(tǒng)一依
// 賴版本,避免因為各個APP依賴的SDK版本不統(tǒng)一導(dǎo)致很難管理和維護
// 遠程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"]

總結(jié)如下:

二、不同依賴配置方式的區(qū)別: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'
}

網(wǎng)上查資料時,依賴配置方式還有:provided、api、apk、compileOnly、runtimeOnly、渠道名+Compile,差異主要在于構(gòu)建內(nèi)容和參與構(gòu)建的時機,多樣的配置方式滿足了開發(fā)者的花樣需求,具體區(qū)別如下:

1、implementation:

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

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

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

2、api(原compile):

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

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

3、compileOnly(provided):

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

4、runtimeOnly(原apk):

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • JNI方法實現(xiàn)圖片壓縮(壓縮率極高)

    JNI方法實現(xiàn)圖片壓縮(壓縮率極高)

    這篇文章主要給大家介紹了一種JNI方法實現(xiàn)圖片壓縮(壓縮率極高)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • android多線程斷點下載-帶進度條和百分比進度顯示效果

    android多線程斷點下載-帶進度條和百分比進度顯示效果

    下面小編就為大家?guī)硪黄猘ndroid多線程斷點下載-帶進度條和百分比進度顯示效果。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Android7.0行為變更之適配File Provider的方法

    Android7.0行為變更之適配File Provider的方法

    這篇文章主要介紹了Android7.0行為變更之適配File Provider的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • android應(yīng)用開發(fā)之spinner控件的簡單使用

    android應(yīng)用開發(fā)之spinner控件的簡單使用

    Android的控件有很多種,其中就有一個Spinner的控件,這個控件其實就是一個下拉顯示列表。本文通過腳本之家平臺給大家介紹android應(yīng)用開發(fā)之spinner控件的簡單使用,感興趣的朋友可以參考下
    2015-11-11
  • Kotlin協(xié)程基礎(chǔ)元素梳理分析

    Kotlin協(xié)程基礎(chǔ)元素梳理分析

    這篇文章我們來講協(xié)程的基礎(chǔ)元素,畢竟協(xié)程是一個很強大的設(shè)計模式,深入了解需要花很多的時間,我們先從簡單開始,其實學(xué)會了簡單的使用,基本已經(jīng)可以滿足我們平時的開發(fā)需要了,話不多說,開始
    2022-11-11
  • Android自定義狀態(tài)欄顏色與應(yīng)用標題欄顏色一致

    Android自定義狀態(tài)欄顏色與應(yīng)用標題欄顏色一致

    看IOS上的應(yīng)用,應(yīng)用中狀態(tài)欄的顏色總能與應(yīng)用標題欄顏色保持一致,用戶體驗很不錯,對于這種效果怎么實現(xiàn)的呢?下面小編給大家分享android自定義狀態(tài)欄顏色與應(yīng)用標題欄顏色一致的實現(xiàn)方法,一起看看吧
    2016-09-09
  • Android開發(fā)實現(xiàn)webview中img標簽加載本地圖片的方法

    Android開發(fā)實現(xiàn)webview中img標簽加載本地圖片的方法

    這篇文章主要介紹了Android開發(fā)實現(xiàn)webview中img標簽加載本地圖片的方法,結(jié)合實例形式分析了webview加載本地圖片的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Android控件ListView使用方法詳解

    Android控件ListView使用方法詳解

    這篇文章主要為大家詳細介紹了Android控件ListView的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android RecycleView實現(xiàn)Item拖拽效果

    Android RecycleView實現(xiàn)Item拖拽效果

    RecyclerView是Android一個更強大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。本文將介紹通過RecyclerView實現(xiàn)Item拖拽效果以及拖拽位置保存,感興趣的可以參考一下
    2022-01-01
  • 解決video標簽在安卓webview下無法自動播放問題

    解決video標簽在安卓webview下無法自動播放問題

    這篇文章主要介紹了video標簽在安卓webview下無法自動播放問題的解決方法 ,需要的朋友可以參考下
    2014-03-03

最新評論

临潭县| 通辽市| 巴彦淖尔市| 新闻| 祥云县| 施秉县| 泗阳县| 叶城县| 沙坪坝区| 库尔勒市| 读书| 栖霞市| 涪陵区| 阳江市| 武清区| 连州市| 旺苍县| 朝阳市| 海原县| 龙口市| 三明市| 乌拉特后旗| 织金县| 陈巴尔虎旗| 祁阳县| 岑巩县| 化州市| 昆明市| 七台河市| 忻州市| 晋州市| 县级市| 牙克石市| 光山县| 涿鹿县| 内乡县| 育儿| 湖南省| 河北区| 孙吴县| 德钦县|