Android Studio Gradle 重命名输出App或者Library的文件名称、更改输出目录

from: http://laole918.com/2016/07/12/gradle-output/

更改app的outputFile

  • 方法一:编译完成之后,copy到指定目录,同时重命名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    android {
    	{...}
    	applicationVariants.all { variant ->
            if (variant.buildType.name == 'release') {
                variant.assemble.doLast {
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('release.apk')) {
                            def fileName = "${project.name}${variant.flavorName}_${defaultConfig.versionName}_${releaseTime()}"
                            def outputPath = "../output/apk";
                            copy {
                                from outputFile
                                into outputPath
                                rename { fileName + ".apk" }
                            }
                        }
                    }
                }
            }
        }
        {...}
    }
    
  • 方法二:直接改变output.outputFile的目录并重命名
    注意:没有 doLast{}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    android {
    	{...}
        applicationVariants.all { variant ->
            if (variant.buildType.name == 'release') {
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('release.apk')) {
                        def fileName = "${project.name}${variant.flavorName}_${defaultConfig.versionName}_${releaseTime()}"
                        def outputPath = "../output/apk";
                        output.outputFile = new File(outputPath, fileName + ".apk")
                    }
                }
            }
        }
        {...}
    }
    

更改library的outputFile

  • 方法一:编译完成之后,copy到指定目录,同时重命名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    android{
    	    libraryVariants.all { variant ->
            if (variant.buildType.name == 'release') {
                variant.assemble.doLast {
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('release.aar')) {
                            def fileName = "${project.name}${variant.flavorName}_${android.defaultConfig.versionName}_${releaseTime()}"
                            def outputPath = "../output/aar"
                            copy {
                                from outputFile
                                into outputPath
                                rename { fileName + ".aar" }
                            }
                        }
                    }
                }
            }
        }
    }
    
  • 方法二:直接改变output.outputFile的目录并重命名

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    android {
    	libraryVariants.all { variant ->
            if (variant.buildType.name == 'release') {
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('release.aar')) {
                        def fileName = "${project.name}${variant.flavorName}_${android.defaultConfig.versionName}_${releaseTime()}"
                        def outputPath = "../output/aar"
                        output.outputFile = new File(outputPath, fileName + ".aar")
                    }
                }
            }
        }
    }
    
  • 方法三:如果想要最终打出jar,兼容eclipse。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    android {
    	{...}
        libraryVariants.all { variant ->
            if (variant.buildType.name == 'release') {
                variant.assemble.doLast {
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('release.aar')) {
                            def fileName = "${project.name}${variant.flavorName}_${android.defaultConfig.versionName}_${releaseTime()}"
                            def outputPath = "../output/jar"
                            def flavorBundlesPath = "build/intermediates/bundles/$variant.flavorName"
                            tasks.create(name: "export", type: Jar) {
                                from zipTree(flavorBundlesPath + '/release/classes.jar')
                                from fileTree(dir: flavorBundlesPath + '/release', includes: ['assets/**'])
                                baseName = fileName
                                destinationDir = file(outputPath)
                            }
                            export.execute()
                        }
                    }
                }
            }
        }
        {...}
    }
    

注意:以上方法中用到的variant.flavorName是项目中有多渠道配置需要的,如果项目没有配置productFlavors,便可以省略。

参考

http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/
http://stackoverflow.com/questions/19034466/how-to-create-an-android-library-jar-with-gradle-without-publicly-revealing-sour

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值