歡迎訪問昆山寶鼎軟件有限公司網站! 設為首頁 | 網站地圖 | XML | RSS訂閱 | 寶鼎郵箱 | 后臺管理
?

探灵笔记中小狐鬼简介:新聞資訊

MENU

軟件開發知識
原文出處: 曾是放牛娃

探灵笔记小皮美颜版 www.pfyvo.icu 一文搞清 <a href=勞務調派系統Gradle依賴" class="aligncenter size-medium wp-image-31307" title="gradle" src="/uploads/allimg/c190111/154G50A2644F-13S9.jpg" />

之前對 Android Gradle 構建的依賴一直傻傻分不清,這段時間正好接入團體的一個二方庫,踩了許多坑,也順帶把 Gradle 依賴這塊搞清楚了,主要整理了下 Gradle 依賴的范例、依賴設置、如何查察依賴、依賴斗嘴如何辦理。

依賴范例

dependencies DSL 標簽是尺度 Gradle API 中的一部門,而不是 Android Gradle 插件的特性,昆山軟件開發,所以它不屬于 Android 標簽。
依賴有三種方法,如下面的例子:

apply plugin: 'com.android.application'

android { ... }

dependencies {
    // Dependency on a local library module
    implementation project(":mylibrary")

    // Dependency on local binaries
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    implementation 'com.example.android:app-magic:12.3'
}

當地 library ??橐覽?/p>

implementation project(":mylibrary")

這種依賴方法是直接依賴當地庫工程代碼的(需要留意的是,mylibrary 的名字必需匹配在 settings.gradle 中 include 標簽下界說的??槊鄭?。

當地二進制依賴

implementation fileTree(dir: 'libs', include: ['*.jar'])

這種依賴方法是依賴工程中的 module_name/libs/ 目次下的 Jar 文件(留意 Gradle 的路徑是相對付 build.gradle 文件來讀取的,所以上面是這樣的相對路徑)。

假如只想依賴單個特定當地二進制庫,可以如下設置:

implementation files('libs/foo.jar', 'libs/bar.jar')

長途二進制依賴

implementation 'com.example.android:app-magic:12.3'

上面是簡寫的方法,這種依賴完整的寫法如下:

implementation group: 'com.example.android', name: 'app-magic', version: '12.3'

group、name、version配合定位一個長途依賴庫。需要留意的點是,version最好不要寫成”12.3+”這種方法,除非有明晰的預期,因為非預期的版本更新會帶來構建問題。長途依賴需要在repositories標簽下聲明長途客棧,譬喻jcenter()、google()、maven客棧等。

依賴設置

今朝 Gradle 版本支持的依賴設置有:implementation、api、compileOnly、runtimeOnly 和 annotationProcessor。已經廢棄的設置有:compile、provided、apk、providedCompile。另外依賴設置還可以加一些設置項,譬喻 AndroidTestImplementation、debugApi 等等。

常用的是 implementation、api、compileOnly 三個依賴設置,寄義如下:

  • implementation:與compile對應,會添加依賴到編譯路徑,而且會將依賴打包到輸出(aar或apk),可是在編譯時不會將依賴的實現袒露給其他module,也就是只有在運行時其他module才氣會見這個依賴中的實現。利用這個設置,昆山軟件開發,可以顯著晉升構建時間,因為它可以淘汰從頭編譯的module的數量。發起,只管利用這個依賴設置。
  • api:與 compile 對應,成果完全一樣,會添加依賴到編譯路徑,而且會將依賴打包到輸出(aar 或a pk)。與 implementation 差異,這個依賴可以通報,其他 module 無論在編譯時和運行時都可以會見這個依賴的實現,也就是會泄漏一些不該該不利用的實現。舉個例子,A 依賴 B,B 依賴 C,假如都是利用 api 設置的話,A 可以直接利用 C 中的類(編譯時和運行時)。而假如是利用 implementation 設置的話,在編譯時,A 無法會見 C 中的類。
  • compileOnly:與 provided 對應,Gradle 把依賴加到編譯路徑,編譯時利用,不會打包到輸出(aar 或 apk)。這可以淘汰輸出的體積,在只在編譯時需要,在運行時可選的環境,很有用。
  • runtimeOnly:與 apk 對應。Gradle添加依賴只打包到 apk,運行時利用,但不會添加到編譯路徑。這個沒有利用過。
  • annotationProcessor:與 compile 對應,用于注解處理懲罰器的依賴設置,這個沒用過。
  • 查察依賴樹

    可以查察單個module可能這個project的依賴,通過運行依賴的 Gradle 任務,如下:

    1. View -> Tools Windows -> Gradle(可能點擊右側的 Gradle 欄);
    2. 展開 AppName -> Tasks -> Android,然后雙擊運行 AndroidDependencies。運行完,就會在 Run 窗口打出依賴樹了。

    依賴斗嘴辦理

    跟著許多依賴插手到項目中,不免會呈現依賴斗嘴,呈現依賴斗嘴如何辦理?

    定位斗嘴