android gradle 多渠道打包小結
概述
多渠道對於android來說是一個比較常見的概念,舉幾個常見的用法:
- 根據不同的渠道使用不同的資源
- 根據不同的渠道使用不同的依賴
- 根據不同的渠道作不同的資料統計
- 根據不同的渠道,遊戲app中對應不同的服務區
github地址
本文專案基於筆者自己寫的demo,對其有興趣的讀者可以自行下載:
android studio的多渠道
如果要使用多渠道,僅需要在該專案的build.gradle檔案中增加以下程式碼:
android {
flavorDimensions "version"
productFlavors {
oneTest {
}
twoTest {
}
threeTest {
}
}
}
然後可以在android studio左側欄中的 Build Variants 中選擇module的渠道,如下圖:
buildConfig區分不同的渠道
透過buildConfigField可以在BuildConfig中設定不同的引數,然後在程式碼中可以透過BuildConfig的引數來區分不同的渠道。
productFlavors {
oneTest {
buildConfigField("String", "TEST_CHANNEL", ""one"")
}
twoTest {
buildConfigField("String", "TEST_CHANNEL", ""two"")
}
threeTest {
buildConfigField("String", "TEST_CHANNEL", ""three"")
}
}
Demo中BuildConfig的程式碼如下:
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.multichanneltest";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "threeTest";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
// Field from product flavor: threeTest
public static final String TEST_CHANNEL = "three";
}
Demo中BuildConfig的使用程式碼如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根據不同的渠道引數來作不同的邏輯
if (TextUtils.equals(BuildConfig.TEST_CHANNEL, "one")) {
} else if (TextUtils.equals(BuildConfig.TEST_CHANNEL, "two")) {
} else if (TextUtils.equals(BuildConfig.TEST_CHANNEL, "three")) {
}
}
}
manifest區分不同的渠道
透過使用manifestPlaceholders,為不同的渠道設定不同的值。
productFlavors {
oneTest {
manifestPlaceholders = [test_app_name: “TestOneApp”]
}
twoTest {
manifestPlaceholders = [test_app_name: “TestTwoApp”]
}
threeTest {
manifestPlaceholders = [test_app_name: “TestThreeApp”]
}
}
Demo中為不同的渠道設定了不同的appName,程式碼如下:
設定不同渠道的資源
透過設定sourceSets,可以為不同的渠道設定不同的資源。
如下,Demo中的程式碼,在不同的渠道下,使用不同的java資源。
如果在oneTest的渠道下,"src/main/twoTest"與"src/main/threeTest"目錄下的檔案不會參與編譯。
android {
sourceSets {
oneTest {
java {
srcDirs = ["src/main/java", "src/main/oneTest"]
}
}
twoTest {
java {
srcDirs = ["src/main/java", "src/main/twoTest"]
}
}
threeTest {
java {
srcDirs = ["src/main/java", "src/main/threeTest"]
}
}
}
}
————————————————
版權宣告:本文為CSDN博主「許佳佳233」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/Double2hao/article/details/115531299
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4560/viewspace-2807260/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android Studio 使用Gradle多渠道打包AndroidGradle
- Gradle for Android系列之五 多渠道打包GradleAndroid
- Android使用Gradle實現多渠道打包AndroidGradle
- Android 詳解Gradle(3.1.4)實現多渠道打包AndroidGradle
- Gradle For Android(二) 多渠道打包與簽名配置GradleAndroid
- Gradle 實現 Android 多渠道定製化打包GradleAndroid
- Gradle實戰:Android多渠道打包方案彙總GradleAndroid
- Gradle for Android(三)多渠道打包、配置簽名資訊GradleAndroid
- 關於Android studio Gradle 實現多渠道打包AndroidGradle
- android Ant 批量多渠道打包 總結!Android
- Android多渠道打包Android
- Gradle模組化配置及多渠道打包Gradle
- Android多渠道打包工具Gradle外掛使用詳解AndroidGradle
- Android持續整合:Jenkins+Gradle+360加固+多渠道打包AndroidJenkinsGradle
- Android 多渠道打包配置Android
- Walle —— Android多渠道打包神器Android
- Android多渠道打包實踐Android
- android多渠道打包最快方案Android
- 史上最詳細的Android Studio系列教程六--Gradle多渠道打包AndroidGradle
- Android美團多渠道打包Walle整合Android
- 多渠道打包
- Android 多渠道打包開發記錄Android
- Android多渠道打包相關介紹Android
- Gradle多渠道打包的原理、實踐與輔助開發Gradle
- Gradle prodcutFlavors 多渠道Gradle
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- Android 生成簽名apk與多渠道打包AndroidAPK
- Android使用Ant進行apk多渠道打包AndroidAPK
- Flutter 多渠道打包實踐Flutter
- Android studio gradle 打包 那些事AndroidGradle
- Android Studio 使用 Gradle 打包 JarAndroidGradleJAR
- Android進階之Walle多渠道打包&Tinker熱修復Android
- Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統JenkinsGitAndroid
- android studio 3.0 gradle 打包指令碼配置AndroidGradle指令碼
- Flutter 多環境、多渠道自動打包Flutter
- Android 多渠道配置Android
- Java打包FatJar方法小結JavaJAR
- Android 自動化打包實踐 gradle打包並推送到git遠端庫AndroidGradleGit