jiu_jie2
2017-07-05 05:50android studio使用gradle编译工程的时候一个问题
10我是想通过以下代码[在build.gradle文件中],实现每次打release包的时候每个flavor的apk以及mapping.txt文件进行重命名并放在一个专门的文件夹下。
applicationVariants.all { variant ->
def buildType = variant.buildType.name
def relativePath = "${applicationId}.${time}_v${versionName}_${versionCode}_${buildType}" + (hasFlavors ? "_" + variant.flavorName : "")
def path = APK_OUTPUT_FILE_PATH + "/" + relativePath
if (buildType == "release") {
def myFlavor = (hasFlavors ? variant.flavorName : "")
tasks.all {
println("TASK:" + it.name)
if ("assemble" + myFlavor + "Release".equalsIgnoreCase(it.name)) {
variant.outputs.each { output ->
def appName = relativePath + ".apk"
// 通过直接修改gradle输出apk文件的字段的值来达到修改输出apk文件的目的;而不是在输出到默认文件夹后再copy
output.outputFile = new File(path, appName)
// 这段代码存在隐患--->每次gradle执行sync或者编译debug版本都会走这段代码,导致在APK目录下生成大量的文件夹!
it.doLast {
copy {
def desFile = file(path)
from "${buildDir}/outputs/mapping/${variant.dirName}/mapping.txt"
println("variant.dirName:" + variant.dirName)
into desFile
rename { String fileName ->
def desFileName = (hasFlavors ? variant.flavorName : "release") + "_" + time + "_mapping.txt"
println("desFileName:" + desFileName + ";hasFlavors: " + hasFlavors)
fileName.replace("mapping.txt", desFileName)
}
}
}
}
}
}
}
}
功能是实现了,但是问题是gradle在sync或者我打debug包的时候也会在我的目标目录下生成文件夹,并将mapping.txt文件拷贝进去,虽然不影响使用,但是大批量的生成无用的文件夹太冗余了。
- 点赞
- 回答
- 收藏
- 复制链接分享
4条回答
为你推荐
- 怎么解决 undefined reference to AAssetManager_FromJava
- android
- c++
- 2个回答
- Golang-Gomobile基本脚本编译错误
- java
- android
- 1个回答
- opencv 在as ndk中 始终抱找不到 undefined reference to 'cv::imwrite
- android-studio
- android
- c++
- 1个回答
- idea 写flutter app,重启电脑后项目便宜报错Error:Android Dex: [my_app] Unable to execute DX
- android-studio
- android
- 2个回答
- Android studio 3.1.3 初始化项目 build 失败问题
- android-studio
- android
- 7个回答
换一换