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