Android多渠道打包及资源指定

多渠道打包及资源指定

由于项目涉及多个车型,使用的是同一个base代码,不同车型都有差分项,所以需要进行多渠道打包,编译不同的资源进行编译处理

一、多渠道打包方式

productFlavor

背景

Android默认提供了Gradle插件库

classpath "com.android.tools.build:gradle:4.0.1"

在module中的build.gradle中引入相关插件,如:

apply plugin: 'com.android.application'

而productFlavor正是这个插件中提供的API方便进行配置

使用

需要在module下的build.gradle中设置

flavorDimensions "default"    
productFlavors {
        favor {

        }

        disfavor {

        }
}

此时就可以在AndroidStudio中的BuildVariants中选择想要编译的版本

在这里插入图片描述

  • 我们只配置了两项,至于这里的为什么有四个选项,这是由于APP默认就会有两个变种,分别是debug和release;

  • debug和release版本区别

    Android开发中,Debug版本和Release版本是两种不同的构建方式,它们在以下几个方面有所区别:

    1. 调试信息:Debug版本包含了丰富的调试信息,以方便开发者在调试过程中进行断点调试、日志输出等操作。这些调试信息可以帮助开发者定位和解决问题。而Release版本会进行代码优化和混淆,以减小应用程序的体积和提高执行效率,但可能不包含完整的调试信息。
    2. 性能:由于Debug版本包含了较多的调试信息和没有经过优化的代码,因此它往往会比Release版本运行速度稍慢。而Release版本由于进行了代码优化、资源压缩和混淆等操作,因此在性能方面通常更为优化。
    3. 安全性:由于Release版本进行了代码混淆和资源压缩等操作,使得逆向工程变得更加困难,从而提高了应用程序的安全性。而Debug版本则没有进行相关操作,可能容易被逆向工程分析。
    4. 签名:Release版本需要进行数字签名,以确保应用程序的身份和完整性。签名可以防止恶意篡改应用程序,并使得应用程序在发布到应用商店时能够通过签名验证。
    5. 日志输出:Debug版本可以输出详细的日志信息,包括调试信息、异常堆栈等。而Release版本通常会禁用一些敏感信息的日志输出,以保护用户隐私和应用程序的安全
  • 这里的flavorDimensions是必须要有的,否则会报错Error:All flavors must now belong to a named flavor dimension. AndroidStudio3.0之前可以,之后的版本就会提示这个异常;大致是因为Plugin 3.0.0之后有一种自动匹配消耗库的机制,便于debug variant 自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度。解决办法就是添加flavorDimensions “” 最好属性设置default默认,这样就可以保证所有的flavor属于同一个维度;注意这里的flavorDimensions可以添加多个属性,但是添加多个属性后需要在每个flavor中配置相应的dimension;例如

    flavorDimensions "default","channel"
    productFlavors {
        favor {
            dimension "default"
            buildConfigField "boolean", "LOG_DEBUG", "false"
        }

        disfavor {
            dimension "channel"
            buildConfigField "boolean", "LOG_DEBUG", "true"
        }
    }
  • 同时,我们可以在不同的flavor中配置需要的属性值,比如上面的buildConfigField设置,这样就会在BuildConfig文件中生成,这样我们就可以在代码中读取相应的值进行设置在这里插入图片描述

二、资源制定

sourceSets

sourceSet 的具体表现类为 com.android.build.gradle.api.AndroidSourceSet 是一个接口;sourceSets可以针对不同的类型进行个性化设置,main为主干,其他的设置为分支,分支的设置会合并到主干中,并且支持配置多个sourceSet

使用

需要在module下的build.gradle中设置

    sourceSets {
        main {
            java.srcDirs = ['src/main/java', 'src/main/favor']
            res.srcDirs = ['src/main/res', 'src/main/res-favor']
        }

        favor.java.srcDirs = ['src/main/favor']
        favor.assets.srcDirs = ['src/main/favor/assets']
        favor.res.srcDirs = ['src/main/res-favor']

        disfavor.java.srcDirs = ['src/main/disfavor']
        disfavor.assets.srcDirs = ['src/main/disfavor/assets']
        disfavor.res.srcDirs = ['src/main/res-disfavor']
    }

此时编译的时候就会根据我们选中的不同的渠道下的资源进行编译;上面main中的配置是指将原本编译的路径替换为我们指定的路径,下面的设置是指定不同渠道下需要编译的资源路径

配置

依赖设置

可以根据不同渠道添加不同的依赖文件

dependencies {
    flavorImplementation 'xxx'
    flavorApi 'xxx'
}    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立花泷える宫水三叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值