gradleAndroid开发Android开发经验谈

Android进阶修炼;Gradle骚操作合集

2020-02-26  本文已影响0人  飞鱼_9d08

Gradle骚操作

Gradle是谷歌钦定的android项目构建工具。熟练使用gradle可以实现很多骚操作,比如多渠道打包,指定打包文件路径和文件名等,而且实现方式不止一种。Gradle工具的编程语言叫做 Groovy, Groovy的语法相对宽松,有点类似javascript,怎么写的人都有,但是最终目标可能是一致的。

本文收录一些Gradle骚操作供大家分享,经本人验证可行,会提供完整Demo(Gradle会存在新旧版本兼容问题,运行demo不要改动gradle版本配置):Demo地址

配置buildTypes{ xxx } 自定义"构建类型“

...
android {
    ...
    // 配置签名文件
    signingConfigs {
        debug {
            // 这里会使用默认签名
        }
        release {
            storeFile file("mykey.jks")
            storePassword "android"
            keyAlias "android"
            keyPassword "android"
            v2SigningEnabled true
        }
    }
    //level 1: 打包方式,默认有debug和release,当然可以自己加喜欢的
    buildTypes {

        //内置 debug 和 release,但是我们可以忽略不计
        uat {
            // 测试环境可调试
            debuggable true
            signingConfig signingConfigs.release
        }
        prd {
            // 正式环境 可调式
            debuggable true
            signingConfig signingConfigs.release
        }
        online {
            // 正式发布包 不可调试
            debuggable false
            signingConfig signingConfigs.release
        }

    }

}

dependencies {
    ...
}

关键点:

image

配置productFlavors{ xxx } 自定义"多种打包风味“

Demo地址:https://github.com/18598925736/EnjoyGradleHank/commits/master(切换到时间点:78dc2ca

打包风味 flavor 是 谷歌提供的 多渠道打包的官方手段。

app module 的 build.gradle

...

android {
    ...

    //level 2: 通过productFlavors打包配置,实现多维度风味打包
    flavorDimensions "zone", "themeColor"
    // 定义多风味
    productFlavors {
        /**
         * 越南版  每一个风味选项都必须指定独立的风味值
         */
        vn {
            applicationId "com.global.vn.ftint"
            dimension "zone"
            manifestPlaceholders = [zone: "vn"]
        }

        /**
         * 国内版
         */
        cn {
            applicationId "com.global.cn.ftint"
            dimension "zone"
            manifestPlaceholders = [zone: "cn"]
        }

        /**
         * 主题风格为红色
         */
        red {
            dimension "themeColor"
            manifestPlaceholders = [themeColor: "red"]
        }

        /**
         * 主题风格为蓝色
         */
        blue {
            dimension "themeColor"
            manifestPlaceholders = [themeColor: "blue"]
        }
    }
}

dependencies {
    ...
}

同时必须与 manifest配合:

app module 的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.zhou.enjoygradle2">

    <application
        ...>
        ...
        <meta-data
            android:name="ZONE"
            android:value="${zone}" />
        <meta-data
            android:name="themeColor"
            android:value="${themeColor}" />
    </application>

</manifest>

关键点:

改变apk输出路径和文件名

目前查到有三种写法:

方式对比

先写这么多。后续还有继续补上

作者:波澜步惊
链接:https://www.jianshu.com/p/94933c63ecb2

上一篇下一篇

猜你喜欢

热点阅读