美文网首页Gradle专题
Gradle3-新的output Api

Gradle3-新的output Api

作者: 棒槌爸爸 | 来源:发表于2018-08-18 15:31 被阅读0次

大多数情况,在构建变体的时候,我们都需要对渠道包进行重命名的操作。在gradle2中也许要这样写:

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
            def fileName = 'unite_v' + variant.versionName + '_' + variant.productFlavors[0].name + '_' + buildType.name + '.apk'
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
}

简单介绍一下怎么理解这几行代码。applicationVariants是所有的的变体。在我们的app中有六个,分别是sitDebug,sitRelease,prodDebug,prodRelease,prod_rDebug,prod_rRelease。函数式函数all代表遍历所有变体,如果所有元素与指定条件相符,则返回true。那么variant就代表每一个变体了。在变体的输出文件夹也就是app/build/output/apk下边找到apk文件,那么就给他重命名。

在gradle3中,apk文件并不在app/build/output/apk下边,他在相应的渠道目录的下边,比如sitDebug包就在app/build/output/apk/sit/debug的下边。那么上边的那种写法就不适用了。直接上新学法的代码

applicationVariants.all { variant ->
    variant.outputs.all { output ->
        outputFileName = 'unite_v' + variant.versionName + '_' + variant.productFlavors[0].name + '_' + buildType.name + '.apk'
    }
}

其中内置变量outputFileName就是更改名称的的api,直接设置就可以更名。

拓展:
注意到variant了吧,他就是携带变体的信息,他里边有5个name:versionName,name,flavorname,basename和dirName
在写插件或者编译脚本时候可能会用到。那么四个是什么意思呢?
举个例子来说明吧,比如我们的渠道是itopDemo

- name:itopDemo 
- baseName:itop-Demo
- versionName:1.2.3.04
- flavorName:itop
- dirName:itop/demo

相关文章

  • Gradle3-新的output Api

    大多数情况,在构建变体的时候,我们都需要对渠道包进行重命名的操作。在gradle2中也许要这样写: 简单介绍一下怎...

  • android studio 3.0 重命名打包apk

    API change in variant output Using the Variant API to man...

  • 谈谈java中的IO流

    1.字节流 1.1.字节输出流output 1.1.1.数据写入文件中 通过api查找output。找到很多,其中...

  • Android Log类基本用法

    Log类介绍:API for sending log output.Generally, use the Log....

  • Linux kernel rb-tree (2)

    写了个简单的Demo,使用内核提供的接口创建了一个红黑树。 API Demo code output visual...

  • Netty入门

    原生NIO的缺点(New Input/ Output)) 类库和api繁杂客户端需要断连,重连,异常处理,网络异常...

  • AWS Api gateway 配置lambda授权

    创建REST API 进入api gateway创建新的API 进入新创建的API之后,创建新资源,比如/test...

  • 03.ES6数组对象展开(spread)

    数组对象展开 output: output 浅拷贝 output 转换可迭代对象为数组 output output...

  • forEach方法遍历集合

    旧API、新的forEach API进行遍历打印集合中的元素对比下面比较使用旧API、新的forEach API进...

  • IDEA新加依赖

    1、IDEA工程内新加入依赖时,需要在artifacts内 将新的依赖添加进output内

网友评论

    本文标题:Gradle3-新的output Api

    本文链接:https://www.haomeiwen.com/subject/yddbvftx.html