当前位置:首页 » 《关注互联网》 » 正文

android gradle 多渠道打包小结_许佳佳的博客

12 人参与  2021年04月13日 16:03  分类 : 《关注互联网》  评论

点击全文阅读


概述

多渠道对于android来说是一个比较常见的概念,举几个常见的用法:

  1. 根据不同的渠道使用不同的资源
  2. 根据不同的渠道使用不同的依赖
  3. 根据不同的渠道作不同的数据统计
  4. 根据不同的渠道,游戏app中对应不同的服务区

github地址

本文项目基于笔者自己写的demo,对其有兴趣的读者可以自行下载:
https://github.com/Double2hao/MultiChannelTest

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,代码如下:

  <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="${test_app_name}"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/Theme.MultiChannelTest">
  </application>

设置不同渠道的资源

通过设置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"]
      }
    }
  }
}

点击全文阅读


本文链接:http://zhangshiyu.com/post/17010.html

渠道  设置  代码  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 小说大结局小说穿书成恶毒女配后意外和男主相爱了小说已更新+特别篇(周芃野陆沉舟)纯净版
  • 全书浏览重生高考填报志愿时,我放任全班上大专结局+番外新书(颜禾晚宋津年叶淼淼)_重生高考填报志愿时,我放任全班上大专结局+番外新书(颜禾晚宋津年叶淼淼)全书结局
  • 爱恨随心,不问来路免费阅读_洛之言小冉陈诺精选作品_小说后续在线阅读_无删减免费完结_
  • 方韵陈轩小说(山城有雨)(方韵陈轩)全书+后续+结局在线阅读
  • 替嫁你提的,我嫁顾总你哭什么:结局+番外新上热文(苏漾顾瑾):全文+番外+纯净版结局
  • 重生高考前,我冷眼看清冷佛子将未来断送精彩节选(桑煜时挽)全书免费_(桑煜时挽)重生高考前,我冷眼看清冷佛子将未来断送精彩节选后续(桑煜时挽)
  • 终是庄周梦了蝶原版(南语沈聿珩)
  • 我抛弃赘婿去冲喜,黑道大佬却发疯了许棠傅明礼免费赏析_我抛弃赘婿去冲喜,黑道大佬却发疯了许棠傅明礼免费赏析
  • 乔笙沈明屿后续(乔笙沈明屿)(引以为傲的完美婚姻,不过是一个笑话)完整章节列表_笔趣阁
  • 若似月轮终皎洁(傅临渊沈知意)
  • 与前妻离婚死遁后,她抱着我的尸体痛不欲生全文阅读_明珠李越林母全文_小说后续在线阅读_无删减免费完结_
  • 终章小说重生七零咸鱼翻身小说(重生七零咸鱼翻身)已更新+番外篇章(顾之夏陆景逸)无广告

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1