最近項目需要使用ffmpeg,需要gradle配置引入ffmpeg庫,發現原來通過google官方的代碼倉,下載太慢了,每秒KB級別的速度。(之前下gradle/gradle plugin都不至于這么慢),于是想到配置國內鏡像源來提升下速度。配置完后,速度達到MB級別。這種配置之前也時常接觸,但是沒系統的整理下,這次就來整理下。本文用到阿里云的倉庫,當然國內還有別的倉庫,網上一搜就那幾個。
settings.gradle配置地址
原來settings.gradle文件中相關內容如下。
repositories {
????maven {
????????url 'https://maven.aliyun.com/nexus/content/repositories/releases/'
????}
????google()
????mavenCentral()
}
不過ffmpeg沒從阿里的那個地址找到,因為并不在那個倉。
這次配置成下面。
repositories {
????maven { url 'https://maven.aliyun.com/repository/central' }
????maven { url 'https://maven.aliyun.com/repository/google' }
????maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
????maven { url 'https://maven.aliyun.com/repository/public' }
????//mavenCentral()//實在沒資源就加上這個吧
????//google()//實在沒資源就加上這個吧
}
這么配置,可以保證能滿足大部分的android項目開發要求,gradle/gradle plugin/一些常用庫等等都能在這找到去同步下載(只要相應我們要的東西在瀏覽器上能訪問到,那就是存在這東西了),只是版本肯定沒google官方地址提供的版本那么新,不過如果沒特殊要求,我們其實不用取那么新的版本。
引入的庫的寫法
build.gradle里的implementation后面接的庫的寫法可以參照下面。
加入你要引用的文件信息:
dependencies {
??compile '[GROUP_ID]:[ARTIFACT_ID]:[VERSION]'
}
轉自阿里云官方說明(https://developer.aliyun.com/mvn/guide)。
結合代碼圖1和自己理解說明下各個字段的對應關系。
圖1
比如拿下面這句來舉例。
implementation "androidx.camera:camera-core:${camerax_version}"
GROUP_ID就是androidx.camera,在阿里云搜索的話,就是輸入這個來搜索,如圖2。
圖2
ARTIFACT_ID就是camera-core,搜索列表中文件名就有包含。
VERSION就是對應${camerax_version},這里是定義了個常量,如下。
def camerax_version = "1.3.0-alpha06"
也就是1.3.0-alpha06,一般來說,代碼中的版本號就填搜索結果中的version那一列內容,如圖2紅框。
這里說下implementation最終確定下來用哪個版本庫的技巧。
在用GROUP_ID搜索時,能找到同一個版本后,不同后綴名的文件,后綴有module、pom、jar、aar等,如圖3,具體要用哪個,你可以另外再確認下這些后綴名對應文件的作用是什么,這些網上都有資料這里不贅述。一般來說,如果我們只是要引入這個庫,而不需要將對應的軟件下載下來集成到我們項目工程的話,你只要通過GROUP_ID搜索到,同時ARTIFACT_ID也找到有,那就說明這個庫在阿里云是存在的,直接配到代碼中就好。當然也有例外,因為android項目在根據implement構建下載對應庫時,會下載不同后綴的文件去,搞不好可能就是某個版本的jar或是pom或是其他文件不存在。如果碰到這情況,另外換個版本號就好,多試幾次。實在沒有,那就最后考慮加入那個龜速的官方地址吧。
圖3