升级Gradle 3.0重命名Apk并输出指定目录

背景是工程之前用的2.2.2版本,gradle-wrapper是gradle-2.14.1-all,这个版本的重命名apk和输出指定目录如下代码:

android.applicationVariants.all { variant ->

        variant.assemble.doLast {
            def targetDir = "$rootDir/bin"
            def fileNamePrefix = "${project.name}-${variant.baseName}"
            def targetFileNamePrefix = "${project.name}-${variant.baseName}-${project.android.defaultConfig.versionName}"
            targetFileNamePrefix = "soho_${project.android.defaultConfig.versionName}.${project.android.defaultConfig.versionCode}_android_${variant.baseName}"

            // gradle 2.2.2 适用
            project.copy {
                from variant.outputs.outputFile
                into "${targetDir}"
                rename("${fileNamePrefix}.apk", "${targetFileNamePrefix}.apk")
                project.logger.error("Copy ${fileNamePrefix}.apk to ${targetDir}/${targetFileNamePrefix}.apk")
            }


            project.copy {
                // copy mapping.txt
                from "${project.buildDir}/outputs/mapping/${variant.dirName}/mapping.txt"
                into "${targetDir}"
                rename("mapping.txt", "${targetFileNamePrefix}-mapping.txt")

                project.logger.error("Copy mapping.txt to ${targetDir}/${targetFileNamePrefix}-mapping.txt")
            }
}

            project.copy {
                from "${project.buildDir}/intermediates/symbols/${variant.dirName}/R.txt"
                into "${targetDir}"
                rename("R.txt", "${targetFileNamePrefix}-R.txt")

                project.logger.error("Copy R.txt to ${targetDir}/${targetFileNamePrefix}-R.txt")
            }
        }*/
    }

不升级一切都安好,升级gradle3.0之后就报错了:

在这里插入图片描述

问题很明确,就是不兼容了呗。

纠结了一会,gradle版本肯定要升级的,就做下适配:

android.applicationVariants.all { variant ->

        variant.outputs.all { output ->
            def outputFile = output.outputFile

            def targetDir = "$rootDir/bin"

            def targetFileNamePrefix

            def date = new Date()

            def formattedData = date.format('yyyyMMddHHmm')

            def fileNamePrefix = "${project.name}-${variant.baseName}"
            project.logger.error("fileNamePrefix: ${fileNamePrefix}")


            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                project.logger.error("outputFile: ${outputFile}")

                if (variant.buildType.name.equals("release")) {
                    targetFileNamePrefix = "soho_${project.android.defaultConfig.versionName}.${project.android.defaultConfig.versionCode}_android_release_${formattedData}"
                } else if (variant.buildType.name.equals("debug")) {
                    targetFileNamePrefix = "soho_${project.android.defaultConfig.versionName}.${project.android.defaultConfig.versionCode}_android_debug_${formattedData}"
                }
                project.logger.error("outputFileName: ${targetFileNamePrefix}")

                project.copy {
                    from output.outputFile
                    into "${targetDir}"
                    rename("${fileNamePrefix}.apk", "${targetFileNamePrefix}.apk")
                    project.logger.error("Copy ${fileNamePrefix}.apk to ${targetDir}/${targetFileNamePrefix}.apk")
                }

                project.copy {
                    // copy mapping.txt
                    from "${project.buildDir}/outputs/mapping/${variant.dirName}/mapping.txt"
                    into "${targetDir}"
                    rename("mapping.txt", "${targetFileNamePrefix}-mapping.txt")

                    project.logger.error("Copy mapping.txt to ${targetDir}/${targetFileNamePrefix}-mapping.txt")
                }

                project.copy {
                    from "${project.buildDir}/intermediates/symbols/${variant.dirName}/R.txt"
                    into "${targetDir}"
                    rename("R.txt", "${targetFileNamePrefix}-R.txt")

                    project.logger.error("Copy R.txt to ${targetDir}/${targetFileNamePrefix}-R.txt")
                }
            }
        }
    }

ok,适配完毕,完美。

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小巫技术博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值