博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Andriod Studio Gradle 学习记录
阅读量:5772 次
发布时间:2019-06-18

本文共 2868 字,大约阅读时间需要 9 分钟。

hot3.png

这两天看groovy语法,,看的我快要吐了....

1.准备工作:Android studio 的构建工具 gradle是基于groovy来管理项目的,所以先要看groovy语法,语法都不难,看过一遍熟悉一下,最好多动手自己敲一敲。
2.Studio里面的调用介绍:Studio里面自带关于gradle的API,groovy这家伙和java互通,可以互相调用,比java语法更简洁吧,类似js的风格。在项目下找到build.gradle文件里面就是类似下面的代码

apply plugin: 'com.android.application'android {    println("android-----------")    compileSdkVersion 25    buildToolsVersion "25.0.0"    defaultConfig {  ...

在点击Studio的run或者打包按钮时,会自动调用里面的代码顺序执行,可以把它看做一个java类

3.关于怎么学习使用:最好自己多在里面打印一些println信息,看看执行调用的顺序;也可以自己写一些方法,然后调用,你会感觉和java好像...

def say={        def keystore=file('android.keystore')        println("---keystore---size---------"+keystore.size())        keystore=new File(keystore.parent,"my.keystore")        keystore.write("哈")        println("---keystore---size---------"+keystore.size())        println("---keystore---name---------"+keystore.name)    }    say.call()

上面的def say是定义了一个闭包(groovy里面的),相对于java类里面的一个方法,然后say.call()是调用这个方法,就会依次执行say闭包里面的代码;def keystore=file('android.keystore')是找到给到路径的文件,然后打印文件信息,对文件操作一些的。

4.关于配置常量:可以在gradle.properties文件里面,定义一些常量,然后在build.gradle文件里面引用,因为每次改动build.gradle文件都要重新sync now,好烦...

ANDROID_VERSION_CODE=10

然后在build.gradle文件的

android {    println("android-----------")    compileSdkVersion 25    buildToolsVersion "25.0.0"    defaultConfig {        versionCode Integer.parseInt(ANDROID_VERSION_CODE)

输入定义的常量,这样下次发版打包的时候,改动gradle.properties里面的值就好,不用重新sync now了,O(∩_∩)O哈哈~

5.关于gradle多渠道打包:假如市场推广要打几十个渠道包怎么整呢,一个一个打包烦死了%>_<%,以下是关于gradle打包的配置,还是在build.gradle文件里面,使用productFlavors:

android {    ...          productFlavors{        xiaomi{             String UMENG_CHANNEL_VALUE = '"xiaomi"'            buildConfigField 'String', 'UMENG_CHANNEL_VALUE', UMENG_CHANNEL_VALUE        }        huawei{             String UMENG_CHANNEL_VALUE = '"huawei"'            buildConfigField 'String', 'UMENG_CHANNEL_VALUE', UMENG_CHANNEL_VALUE        }    }}

然后就可以在代码里面的渠道号=BuildConfig.UMENG_CHANNEL_VALUE获取自己设置的渠道值了。这样写不止是渠道号,还可以定义好多渠道相关的信息到 BuildConfig 类里面,然后调用。

如果渠道号写在manifest文件里面

就可以这样

xiaomi{            manifestPlaceholders=[UMENG_CHANNEL_VALUE:'xiaomi']        }

多渠道打包截图

就可以这样愉快地选择要打的包了,O(∩_∩)O哈哈~
6.但是,然而,假如要每个渠道包的名字都要有一定的格式呢,一个一个的改好烦...
好在可以在build.gradle里面这样:

applicationVariants.all { variant ->        println("applicationVariants---------"+variant.name)        variant.outputs.each { output ->            def outputFile = output.outputFile            if (outputFile != null && outputFile.name.endsWith('.apk')) {                String name = variant.productFlavors[0].name;                name = name.replace("huawei", "hhhhhhh");                // 下面的appname改为你自己的app name                def fileName = "${defaultConfig.versionName}_zhangyi_${name}.apk"                output.outputFile = new File(outputFile.parent, fileName)            }        }    }

遍历输出信息,筛选apk文件,改成自己想要的O(∩_∩)O哈哈~

最后推荐几个参考链接,,以及...

转载于:https://my.oschina.net/u/2606060/blog/813952

你可能感兴趣的文章
Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化 ...
查看>>
开发网络视频直播系统需要注意的地方
查看>>
haproxy mysql实例配置
查看>>
强化学习的未来— 第一部分
查看>>
TableStore:用户画像数据的存储和查询利器
查看>>
2019 DockerCon 大会即将召开,快来制定您的专属议程吧!
查看>>
15分钟构建超低成本数据大屏:DataV + DLA
查看>>
jSearch(聚搜) 1.0.0 终于来了
查看>>
盘点2018云计算市场,变化大于需求?
查看>>
极光推送(一)集成
查看>>
MySQL 8.0 压缩包版安装方法
查看>>
@Transient注解输出空间位置属性
查看>>
Ansible-playbook 条件判断when、pause(学习笔记二十三)
查看>>
5种你未必知道的JavaScript和CSS交互的方法(转发)
查看>>
线程进程间通信机制
查看>>
galera mysql 多主复制启动顺序及命令
查看>>
JS prototype 属性
查看>>
中位数性质——数列各个数到中位数的距离和最小
查看>>
WebApp之Meta标签
查看>>
添加Java文档注释
查看>>