日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android studio开源代码,Android Studio Set of source 代码源集

發布時間:2023/12/10 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android studio开源代码,Android Studio Set of source 代码源集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、源集

1、定義:Android Studio 按邏輯關系將每個模塊的源代碼和資源進行分組,這個分組叫做源集。

2、main Module 源集包括其所有構建變體共用的代碼和資源。這句話很關鍵,意思是,所有的其他構建變體,src/main是其共同擁有的。在說明BuildType時,我們會通過案例代碼進行介紹。

3、其他源集目錄為可選項,在您配置新的構建變體時,Android Studio 不會自動為您創建這些目錄,用戶可以通過File > New 菜單選項新建文件或目錄,進行特定源集進行創建。

源集按照構建類別(buildType)、產品傾向(productFlavor)等,分為以下幾個類型:

源集

備注

src/main/

此源集包括所有構建變體共用的代碼和資源。

src//

創建此源集可加入特定構建類型專用的代碼和資源。

src//

創建此源集可加入特定產品風味專用的代碼和資源。

src//

創建此源集可加入特定構建變體專用的代碼和資源。

例如,要生成應用的“完整調試”版本,構建系統需要合并來自以下源集的代碼、設置和資源:

src/fullDebug/(構建變體源集)

src/debug/(構建類型源集)

src/full/(產品風味源集)

src/main/(主源集)

4、源集的Overlay機制。如果不同源集包含同一文件的不同版本,Gradle 將按以下優先順序決定使用哪一個文件(左側源集替換右側源集的文件和設置):

構建變體 > 構建類型[BuildType] > 產品風味[ProductFlavor] > 主源集[main] > 庫依賴項

在合并多個清單時,Gradle 會使用專用于試圖構建的資源進行編譯,這些文件包括:構建變體的文件,其他應用版本共用的 Activity、應用邏輯和資源,從而達到不同的構建,編譯不同的資源的目的。

二、源集的創建

Gradle 會按照與 main/ 源集類似的特定組織形式來管理源集文件和目錄。例如,Gradle 要求您的“調試”構建類型所特定的 Java 類文件位于 src/debug/java/ 目錄中。

以debug為例,源集構建會有如下幾種方式:

方式一:

1、打開 Project 窗格并從窗格頂端的下拉菜單中選擇 Project 視圖。

2、導航至 MyProject/app/src/。

3、右鍵點擊 src 目錄并選擇 New > Folder > Java Folder。

4、從 Target Source Set 旁邊的下拉菜單中,選擇 debug。

5、點擊 Finish。

方式二:

1、在相同的 Project 窗格中,右鍵點擊 src 目錄并選擇 New > XML > Values XML File。

2、為 XML 文件輸入名稱或保留默認名稱。

3、從 Target Source Set 旁邊的下拉菜單中,選擇 debug。

4、點擊 Finish。

Target Source Set

以上兩種方式,都可以創建源集,源集成功創建后,工程展示如下:

三、源集的重定向

可以通過sourceSets {}來設定Gradle module對應的源集路徑。

Android SourceSet表示Java,aidl和RenderScript源以及Android和非Android(Java風格)資源的邏輯組。

3.1、屬性

屬性

描述

aidl

Android AIDL源目錄為此源設置。

assets

該資源集的Android Assets目錄。

compileConfigurationName

該源集合的編譯配置的名稱。

java

Java源代碼由Java編譯器編譯到類輸出目錄中。

jni

這個源碼集的Android JNI源目錄。

jniLibs

這個源碼集的Android JNI libs目錄。

manifest

該源代碼集的Android Manifest文件。

name

這個源集的名稱。

packageConfigurationName

此源集合的運行時配置的名稱。

providedConfigurationName

此源集合的僅編譯配置的名稱。

renderscript

該源碼集的Android RenderScript源目錄。

res

該資源集的Android資源目錄。

resources

要復制到javaResources輸出目錄的Java資源。

3.2、方法

方法

描述

setRoot(path)

將源集的根設置為給定的路徑。源集合的所有條目都位于此根目錄下。

更多屬性以及方法詳情,請參與官方文檔

案例配置: 配置app/other/目錄中的源映射到 main源集的某些組件,并更改 androidTest 源集的根目錄。

android {

...

sourceSets {

// main源集(source set)的閉包配置。

main {

// 變更Java 的源文件夾,默認的文件夾 = 'src/main/java'.

java.srcDirs = ['other/java']

//如果像以下方式一樣,列出來多個文件夾,那么Gradle使用所有的這些文件夾來加載資源,

//并賦予這些文件夾相同的優先級。如果不同的文件夾中定義了相同的資源,那么會產生資源合并錯誤。

//默認的資源文件夾是 'src/main/res'.

res.srcDirs = ['other/res1', 'other/res2']

//避免多個文件夾出現“父子”依賴關系。例如:如下情況要避免:

//res.srcDirs = ['other/res1', 'other/res1/layouts', 'other/res1/strings']

//應該只指定:'other/res1'或者指定'other/res1/layouts' and 'other/res1/strings'

//每個源集只能有一個AndroidManifest.xml清單文件,

//默認情況下,main源集的清單文件在src/main/ 目錄中。

manifest.srcFile 'other/AndroidManifest.xml'

...

}

// 創建額外閉包塊區配置其他源集

androidTest {

// 如果所有的源集文件都在一個單獨的目錄中,可以使用setRoot來進行配置。

// 這樣子,Gradle就只會加載該區域。例如:如下配置,Gradle只會從src/tests/java/

// 來獲取源集文件。

setRoot 'src/tests'

...

}

}

}

...

四、源集的使用

在使用源集進行編譯的時候,要特別注意資源合并的優先級的問題。上面也提到了,優先級如下:

構建變體 > 構建類型[BuildType] > 產品風味[ProductFlavor] > 主源集[main] > 庫依賴項

詳細說明如下:

Java文件。如果找到兩個或兩個以上定義相同Java 類名的源集目錄,那么Gradle 就會引發一個構建錯誤。

例如,在構建調試 APK 時,同時定義 src/debug/Utility.java 和 src/main/Utility.java,會發生編譯錯誤。 這是因為Gradle 在構建中檢查這兩個目錄并引發了“duplicate class”錯誤。

清單合并為單個清單。在合并清單時,將按照上述列表中的順序指定優先級。也就是說,某個構建類型的清單設置會替換某個產品風味的清單設置,依此類推。

value資源。values/ 目錄中的文件也會合并在一起。如果兩個文件同名,例如存在兩個 strings.xml 文件,將按照上述列表中的相同順序指定優先級。也就是說,某個源集文件中定義的值將會替換產品風味中同一文件中定義的值,依此類推。

res/ 和 asset/ 目錄中的資源將打包到一起。如果兩個或兩個以上的源- 集中定義有同名資源,將按照上述列表中的相同順序指定優先級。

最后,在構建 APK 時,Gradle 會為隨庫模塊依賴項包含的資源和清單分配最低的優先級。

寫作不易,耗費心力,如果上面的內容對你有幫助,請隨意打賞,讓我們堅持下去~

總結

以上是生活随笔為你收集整理的android studio开源代码,Android Studio Set of source 代码源集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。