文档章节

productFlavors简单实用

火云
 火云
发布于 08/21 11:03
字数 466
阅读 28
收藏 0

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下

1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,用于不同组合productFlavors。

2. 每个productFlavors中可以自定义各种变量

替换manifest中的变量需要注意,如果替换2个以上用逗号分隔。

<meta-data
            android:name="app_id"
            android:value="${id_value}" />//占位符
        <meta-data
            android:name="app_key"
            android:value="${key_value}" />
flavorDimensions "api", "mode"

  productFlavors {
    demo {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://10.10.10.222/"')//在BuildConfig中添加 String类型的HTTP_BASE 字段 并赋值
      buildConfigField("int", "POSITION_1", "10020")//增加 int型
      resValue("string","flovor_log","this is free log")//替换 res中String里的flovor_log字段
      ...
    }

    full {
      dimension "mode"
      buildConfigField("String", "HTTP_BASE", '"https://api-hd-huoyun.com/"')
      manifestPlaceholders = [id_value: "1234567890",key_value: "0987654321"]//替换manife中的变量
      ...
    }

    minApi24 {
      dimension "api"
      minSdkVersion '24'
      versionCode 30000 + android.defaultConfig.versionCode//修改版本号
      versionNameSuffix "-minApi24"//版本名称加后缀
      ...
    }

    minApi23 {
      dimension "api"
      minSdkVersion '23'
      versionCode 20000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi23"
      ...
    }

    minApi21 {
      dimension "api"
      minSdkVersion '21'
      versionCode 10000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi21"
      ...
    }
  }
}

如果需要根据不同的productFlavors 依赖不用的包则使用

configurations {
    demo
    full
    minApi24
    ....
}

dependencies中修改为

dependencies {

    implementation 'com.android.support:appcompat-v7:26.1.0'
    .....
    demoImplementation(name: 'test-demo', ext: 'aar')
    fullImplementation(name: 'test-full', ext: 'aar')
    minApi24Implementation(name: 'test-minApi24', ext: 'aar')
    .....
}

修改assets路径,此操作会把指定目录的文件拷入道工程 assets文件夹中。

sourceSets {//不同  配置 使用不用的 文件  打包时不会 全部打入 assets
        dev.assets.srcDirs = ['./allAssets/dev']
        tes.assets.srcDirs = ['./allAssets/tes']
        pro.assets.srcDirs = ['./allAssets/pro']
        personal.assets.srcDirs = ['./allAssets/personal']
    }

参考:

android 多渠道打包的应用

配置构建变体

解决方案:Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs

productFlavors在Lib(Module)中的使用

 

© 著作权归作者所有

共有 人打赏支持
火云
粉丝 4
博文 83
码字总数 9936
作品 0
西城
Android工程师
私信 提问
Android使用Gradle实现多渠道打包

这里我们主要用到gradle文件中的buildTypes和productFlavors,今天我们主要研究下它俩。 先上图: buildTypes 构建类型 默认情况下,Android插件自动为项目构建一个debug和一个release版本的...

安卓干货营
2017/12/14
0
0
使用Gradle构建多版本app

资源文件个性化处理 res目录下的都算资源文件(layout、values、drawable、mipmap) 在build.gradle中定义productFlavors buildToolsVersion "24.0.2"defaultConfig {applicationId "com.atea......

atearsan
2016/09/19
24
2
Android通过build.gradle配置productFlavors区分加载若干套不同代码资源

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/83342652 Android通过build.gradle配置productFlavors区分加载若干套不同代码资源 An...

zhangphil
10/25
0
0
Gradle打包APK的一些小技巧和productFlavor配置

前言 在使用Gradle来打包Android应用之前,Android自动化打包通常会选择使用ant,ant是一种一步一步来执行任务的工具,通常打包一个apk要经过一个复杂的过程,ant工具通过一步一步完成这些过...

SuShine
2016/08/01
1K
0
Android 多渠道打包原理和使用

每次中午吃饭总会和技术同学聊天。当做 iOS 开发的做安卓开发的人员在一起的时候,他们中间又多了一个话题:iOS 开发难还是安卓开发难。 这个时候做安卓开发的同学最激动说安卓开发要自己画界...

OneAPM蓝海讯通
2015/12/11
36
0

没有更多内容

加载失败,请刷新页面

加载更多

node安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

笑丶笑
20分钟前
3
0
OSChina 周三乱弹 —— 夜半回家,推门不动

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :分享陶晶莹/张雨生的单曲《我期待》 《我期待》- 陶晶莹/张雨生 手机党少年们想听歌,请使劲儿戳(这里) @cc_z :熬夜一时爽,...

小小编辑
32分钟前
234
8
验证码

response生成验证码 验证码的作用:防止恶意注册、攻击等 网站上看到的验证码,实际上都是一些图片,而这些图片都是程序(Servlet)生成的! package day19.test; import java.awt.Color; i...

码农屌丝
今天
1
0
day147-2018-11-14-英语流利阅读-待学习

《毒液》刚刚上映,创造漫威宇宙的人却走了 雪梨 2018-11-14 1.今日导读 中国的金庸创造了侠义英雄和江湖传奇,而大洋彼岸的斯坦·李也同样创造了一个绚烂璀璨的漫威宇宙,他构思的每个超级英...

飞鱼说编程
今天
13
0
CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部