文档章节

Andriod Studio Gradle 学习记录

zhang555
 zhang555
发布于 2016/12/28 17:49
字数 792
阅读 11
收藏 0

这两天看groovy语法,Android studio gradle 英文文档,看的我快要吐了....
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文件里面

<meta-data
    android:name="UMENG_CHANNEL"
    android:value="${UMENG_CHANNEL_VALUE}" />

就可以这样

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哈哈~

最后推荐几个参考链接groovy入门groovy基础,以及Android studio gradle 英文文档...

© 著作权归作者所有

zhang555
粉丝 10
博文 81
码字总数 29062
作品 0
朝阳
程序员
私信 提问
Andriod studio 打包aar

因为项目不同,有些公用库而且还是c++的,还有一些带资源的,简单的复制遇到库升级又是一轮配置,编译成aar则解决这些麻烦。 但是默认andriod studio的make moudle只生成debug包,在3.0以上及...

breeze
2018/12/08
0
0
Android Studio 3.3.2 稳定版发布,Bug 修复版本

Android Studio 3.3.2 稳定版发布了,新版提升了性能和稳定性,并修复了一些 Bug。 新版本的更新内容主要是一些问题的修复: Issue#120964779: Indexer 找不到包含的头文件 Issue#123123307:...

段段段落
03/06
3.2K
9
不阅读源码之--GreenDao使用

好久没来了,因为平时都记在云笔记里,偶然想起51自己早期有写博客,不忘初心,今天来这留一篇吧,最近项目需要写数据库,所以这边对greendao做一些记录,也加深学习。 配置android studio ...

熊西西77
2017/04/18
0
0
Android Studio 设置

1 :在Android Studio中添加assets目录 在指定的module上右键:new --> Foder --> Assets Folder即可 如图: 2: Android app 版本控制 在Android Studio中,项目的versionCode 和versionNa......

dj_归去来兮
2015/03/06
6.6K
1
android studio 新建或者导入项目时缓慢或卡死的问题

先说一下碰到的问题,最近要换一个电脑开发,电脑上环境都已经配好就直接down下来项目导入,发现在Building的时特别慢,之前从github上下载的项目也会出现这种情况,等的是心力交瘁。 为了解...

Yao--靠自己
2018/06/21
4
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部