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

更改app的outputFile

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

    12345678910111213141516171819202122
    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{}

    12345678910111213141516
    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到指定目录,同时重命名

    1234567891011121314151617181920
    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的目录并重命名

    1234567891011121314
    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。

    12345678910111213141516171819202122232425
    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

更多相关文章

  1. RecycleView报错:Error inflating class android.support.v7.widg
  2. android 事件分发机制源码解析
  3. Android-Fresco系列6 图片解码
  4. 2017 Android(安卓)github上优秀开源项目分类汇总
  5. Data Storage -- Using Databases[SDK翻译]
  6. Android(安卓)获取图片研究
  7. Android(安卓)View深入学习(三),View的绘制(Draw)过程
  8. Android项目打包开启proguard的混淆优化带来的问题
  9. Android对文件的读写

随机推荐

  1. Android处理异步耗时任务,AsyncTask使用教
  2. Android常用组件之四大天王
  3. 由浅入深研究Android(1)--开篇•序
  4. error: Error parsing XML: unbound pref
  5. Ubuntu下安装VirtualBox和Android(安卓)
  6. Google Map Android v2开发: 安装运行Goo
  7. 关于 android 加载 res 图片 out of memo
  8. 【视频】 安卓渗透课程收集整理
  9. Gradle 构建 android 应用常见问题解决指
  10. Intent机制详解