Android(安卓)Studio Gradle 重命名输出App或者Library的文件名称、更改输出目录
16lz
2021-01-24
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
更多相关文章
- RecycleView报错:Error inflating class android.support.v7.widg
- android 事件分发机制源码解析
- Android-Fresco系列6 图片解码
- 2017 Android(安卓)github上优秀开源项目分类汇总
- Data Storage -- Using Databases[SDK翻译]
- Android(安卓)获取图片研究
- Android(安卓)View深入学习(三),View的绘制(Draw)过程
- Android项目打包开启proguard的混淆优化带来的问题
- Android对文件的读写