Android開發過程中,經常需要根據不同的需求在同一個應用中實現不同的邏輯或使用不同的資源。比如,在不同的渠道中需要使用不同的圖標或logo,在不同的版本中需要使用不同的接口地址,而且這些變化需要在構建時進行配置,因此Android引入了Sourcesets多變體構建的概念。
一、Sourcesets概述
Sourcesets簡單來說就是在同一個應用中區分不同變量的組合。在Android開發中,Sourcesets包括了代碼源文件、資源文件和Manifest文件等應用程序的全部組成部分。
一個Sourcesets包含了由編譯器使用的代碼、資源和生成的文件的集合。Sourcesets命名採用如下命名規則:
sourceSet {
name {
manifest.srcFile 'file path'
java.srcDirs = ['dir path']
resources.srcDirs = ['dir path']
aidl.srcDirs = ['dir path']
res.srcDirs = ['dir path']
assets.srcDirs = ['dir path']
}
}
其中,name是自定義的變體名稱,manifest、java、resources、aidl、res、assets都是Sourcesets中可以包含的文件類型,可以在每個變量中添加或刪除需要包含的文件。
二、Sourcesets的使用
1. Sourcesets的創建
使用gradle來創建Sourcesets非常簡單。首先,在buildTypes中添加一個自定義變體:
buildTypes {
release {
minifyEnabled false //是否混淆
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
customType { //自定義變體
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
然後,在productFlavors中添加需要的變體名稱:
productFlavors {
googleplay {
applicationIdSuffix ".googleplay" //設定應用ID後綴
versionCode 1
versionName "1.0-googleplay"
}
taobao {
applicationIdSuffix ".taobao"
versionCode 1
versionName "1.0-taobao"
}
}
這樣我們就創建了兩個productFlavor,分別是googleplay和taobao。然後可以在每個productFlavor中定義相關文件。
2. Sourcesets的使用
在Android Studio中,可以通過如下方式來使用Sourcesets:
- 打開app/build.gradle文件
- 選擇左側菜單中的”Build Variants”;
- 在變體的下拉列表中選擇一個變體,如googleplayDebug;
- 同步gradle並運行應用程序。
在使用Sourcesets中,可以使用默認變量或自定義變量。如果不使用自定義變量,可以在defaultConfig中添加下面這些配置:
defaultConfig {
applicationId "package-name"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
// 設定默認資源常量值
buildConfigField "String", "API_BASE_URL", "\"https://www.example.com/\""
resValue "string", "app_name", "Best App"
}
三、Sourcesets的優勢
1. 渠道包定製
當開發者需要為多個平台製作apk時,就需要使用到渠道包。渠道包即按照具體的渠道製作的apk包,每個apk包含有對應的渠道號碼。
渠道包定製使用Sourcesets可以實現簡單的配置即可,開發者無需修改代碼,即可輕鬆打包並發布不同的apk版本了。
2. 支持多種版本
通過Sourcesets來構建多種版本,開發者可以輕鬆地支持多種不同的版本,如灰度版本、正式版本和測試版本等等。
使用Sourcesets,開發者可以輕鬆構建多種版本,而且可以根據版本需求來定製資源、java源碼和清單文件等,不會對已有的其他版本產生影響。
3. 方便維護
Sourcesets可以提高應用程序的維護一致性。因為它能夠明確的分離出應用程序的不同部分,並且在每個部分中都給予開發者充分的空間進行自定義開發。
此外,Sourcesets還可以輕鬆地管理應用程序資源,並且可以使應用程序的維護變得更加容易,當應用程序資源發生變化的時候,可以通過Sourcesets輕鬆實現變化。
四、總結
我們學習了Sourcesets多變體構建的概念、使用方法以及優勢。使用Sourcesets,可以方便地構建和發布多種版本的應用程序。此外,它還可以提高應用程序的維護一致性,使應用程序開發更加容易。
Sourcesets可以讓你輕鬆定製apk,不同的渠道包可以有不同的資源和配置,並且不會對其他包有任何影響。
如果你希望在開發過程中輕鬆地發布不同版本的應用程序,那麼Sourcesets是一個非常值得學習的開發工具。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193685.html