Gradle系列-运用篇

本文是Gradle系列的运用篇,讲解如何在Android项目中配置defaultConfig、signingConfigs、buildTypes、productFlavors和sourceSets。通过实例展示了如何设置不同构建类型的签名、过滤构建变体以及自定义源集,帮助理解Gradle在项目中的实战应用。
摘要由CSDN通过智能技术生成


上次我们说到gradle的原理,主要是偏理论上的知识点,直通车在这Android Gradle系列-原理篇。这次我们来点实战的,随便巩固下之前的知识点。

android

在app module下的gradle.build中都有一个android闭包,主要配置都在这里设置。例如默认配置项:defaultConfig;签名相关:signingConfig;构建变体:buildTypes;产品风格:productFlavors;源集配置:sourceSets等。

defaultConfig

对于defaultConfig其实它是也一个productFlavor,只不过这里是用来提供默认的设置项,如果之后的productFlavor没有特殊指定的配置都会使用defaultConfig中的默认配置。

public class DefaultConfig extends BaseFlavor {
   
    @Inject
    public DefaultConfig(
            @NonNull String name,
            @NonNull Project project,
            @NonNull ObjectFactory objectFactory,
            @NonNull DeprecationReporter deprecationReporter,
            @NonNull Logger logger) {
   
        super(name, project, objectFactory, deprecationReporter, logger);
    }
}
 
public abstract class BaseFlavor extends DefaultProductFlavor implements CoreProductFlavor {
   
	...
}

可以看到defaultConfig的超级父类就是DefaultProductFlavor。而在DefaultProductFlavor中定义了许多我们经常见到的配置:VersionCode、VersionName、minSdkVersion、targetSdkVersion与applicationId等等。

有了上面的基础,那么在defaultConfig中我们要配置的变量就显而易见了。

    defaultConfig {
   
        applicationId "com.idisfkj.androidapianalysis"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

signingConfigs

signingConfig是用来配置keyStore,我们可以针对不同的版本配置不同的keyStore,例如

    signingConfigs {
   
        config {
    //默认配置
            storeFile file('key.store')
            storePassword 'android123'
            keyAlias 'android'
            keyPassword 'android123'
        }
        dev {
    //dev测试版配置
            storeFile file('xxxx')
            storePassword 'xxx'
            keyAlias 'xxx'
            keyPassword 'xxx'
        }
    }

有人可能会说这不安全的,密码都是明文,都暴露出去了。是的,如果这项目发布到远程,那么这些秘钥就泄露出去了。所以为了安全起见,我们可以对其进一些特殊处理。

  1. 通过环境变量获取秘钥
storePassword System.getenv("KSTOREPWD")
keyPassword System.getenv("KEYPWD")
  1. 从命令行中获取秘钥
storePassword System.console().readLine("\nKeystore password: ")
keyPassword System.console().readLine("\nKey password: ")

上面两种是Android Develop官网提供的,但经过测试都会报null异常,查了下资料都说是gradle不支持(如果有成功的可以告知我),所以还是推荐下面的这种方法

在项目的根目录下(settings.gradle平级)创建keystore.properties文件,我们在这个文件中进行存储秘钥,它是支持key-value模式的键值对数据

storePassword = android123
keyPassword = android123

之后就是读取其中的password,在build.gradle通过afterEvaluate回调进行读取与设置

afterEvaluate {
   
    def propsFile = rootProject.file(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值