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

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

20 人参与  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://m.zhangshiyu.com/post/17010.html

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

  • 评论(0)
  • 赞助本站

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

最新文章

  • 她与刺同行快手热门_沈知顾衍赵铭推文_小说后续在线阅读_无删减免费完结_
  • 寿命推演,从杂役开始苟到万古无敌精修版_顾长生澹台月好评_小说后续在线阅读_无删减免费完结_
  • 云清故事会_云舒小姐太后新上热文_小说后续在线阅读_无删减免费完结_
  • 顶流小师妹撕我剧本,他却成了我的裙下之臣好评_沈澈谢谢帅哥最新目录_小说后续在线阅读_无删减免费完结_
  • 老公要娶狐狸做平妻,我杀疯了精选作品_陈默老公小少爷精彩分享_小说后续在线阅读_无删减免费完结_
  • 婆婆在我婚礼上跳钢管舞热门榜首_林昊婆婆周慧慧无错版_小说后续在线阅读_无删减免费完结_
  • 害我入狱,我成狱神后你们连跪都不配!独家番外_陆见秋柳盈盈新上_小说后续在线阅读_无删减免费完结_
  • 斗罗v:从逮到千仞雪偷窃开始成神完结版_陈晨胡列娜大反击_小说后续在线阅读_无删减免费完结_
  • 末世开火车,顺便捡了个机械神格高分神作_李昂诺亚独家首发_小说后续在线阅读_无删减免费完结_
  • 云清免费看_云舒小姐太后校园甜文_小说后续在线阅读_无删减免费完结_
  • 军训前,童养媳拿我的病历本给心上人叠纸飞机后,我退婚了完结爽文_杨鹤童养媳阿鹤一口气完结_小说后续在线阅读_无删减免费完结_
  • 未婚夫女兄弟把婚车改成宠物灵车,我反手让她的宾利变破烂最新阅读_魏成鸣乔诗诗林书妍小编推荐_小说后续在线阅读_无删减免费完结_

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

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