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 詳解Gradle(3.1.4)實現多渠道打包AndroidGradle
- Android持續整合:Jenkins+Gradle+360加固+多渠道打包AndroidJenkinsGradle
- Android多渠道打包Android
- Android 多渠道打包配置Android
- Walle —— Android多渠道打包神器Android
- Android美團多渠道打包Walle整合Android
- Android 多渠道打包開發記錄Android
- Android多渠道打包相關介紹Android
- Gradle多渠道打包的原理、實踐與輔助開發Gradle
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- 多渠道打包
- Android進階之Walle多渠道打包&Tinker熱修復Android
- Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統JenkinsGitAndroid
- Flutter 多渠道打包實踐Flutter
- Android 多渠道配置Android
- Flutter 多環境、多渠道自動打包Flutter
- Java打包FatJar方法小結JavaJAR
- Gradle多渠道打包(動態設定App名稱,應用圖示,替換常量,更改包名,變更渠道)GradleAPP
- Android library 釋出多渠道 AARAndroid
- Android官方多渠道方案詳解Android
- 360加固+美團walle多渠道自動化打包
- 自動化瓦力多渠道打包python指令碼Python指令碼
- Gradle系列之Android Gradle基礎配置GradleAndroid
- android Gradle錯(一)AndroidGradle
- Android Gradle外掛AndroidGradle
- 《Android Gradle權威指南》之Gradle入門AndroidGradle
- Android容器類小結Android
- Android工程gradle詳解AndroidGradle
- capt 與 Android Gradle PluginAPTAndroidGradlePlugin
- 一鍵快速切換開發環境以及多渠道打包開發環境
- 分享,第三方登入,統計,多渠道打包
- Android Gradle(一)為什麼現在要用Gradle?AndroidGradle
- electron打包更新與整合sqlite小總結SQLite
- Android Studio之Gradle和Gradle外掛的區別AndroidGradle
- 【Android 修煉手冊】Gradle 篇 -- Gradle 的基本使用AndroidGradle
- Android技能樹 — PopupWindow小結Android
- Android ConstraintLayout 最新使用小結AndroidAI
- Android技能樹 — Drawable小結Android