文档章节

productFlavors简单实用

火云
 火云
发布于 2018/08/21 11:03
字数 466
阅读 31
收藏 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
博文 86
码字总数 10340
作品 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
2018/10/25
0
0
Gradle打包APK的一些小技巧和productFlavor配置

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

SuShine
2016/08/01
1K
0
Android配置build.gradle的productFlavors多渠道打包

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/83302184 Android配置build.gradle的productFlavors多渠道打包 Android在分发不同市场...

zhangphil
2018/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

条形码设计软件BarTender实用教程——透明度样本标签

BarTender是一款优秀的标签、条形码、卡片以及RFID标签设计和打印软件。所有版本的BarTender都具有独立的设计和打印功能,对于更高级的用户,自动化版和企业自动化版本提供了更强大的集成功能...

ymy_666666
41分钟前
0
0
Sql--order by、desc降序、top

Sql--order by、desc降序、top ---------通过order by 语句进行排序: --1.降序order by 列名desc --2.升序order by 列名 或order by 列名asc --3.order by语句必须一定要放在整个sql语句的最...

linjin200
43分钟前
4
0
websocket wss所需的nginx配置以及解决golang作为服务端的跨域问题

下面的配置是微信小程序所需的wss的配置,这里为了方便,,也为了避免使用端口号,和原项目的配置写在一起了,因此使用了固定后缀/wss,以作区分,配置的重点就是location /wss 段,其之后的部分是原...

漫步海边小路
44分钟前
3
0
数字转换汉语中人民币的大写

最终结果输出:你输入的金额为:【123】 大写金额: [壹佰贰拾叁] 下面是实现代码: /** 6 * 数字转换为汉语中人民币的大写<br> 7 * 8 * @author Arvin 9 * @contact 94...

政旭Arvin
53分钟前
2
0
智能合约编程/Dapp漏洞 -- 默认可见性修饰符

Solidity函数有visibility指定符,标明函数如何被允许访问。Visibility决定一个函数是否能被用户,被其他派生合约,从外部调用,仅从内部调用等等。有4个visibility指定符.函数默认的visibil...

怎当她临去时秋波那一转
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部