How to change the proguard mapping file name in gradle for Android project

后端 未结 12 1701
灰色年华
灰色年华 2020-11-30 08:48

I have android project based on gradle and I want to change mapping.txt file name after it\'s generated for my build. How can it be done?

upd

How it can be d

12条回答
  •  猫巷女王i
    2020-11-30 09:25

    Since the last update variant.mappingFile is not longer available. (I use ProGuard version 4.7, AndroidStudio 2.0)

    This is (part of) my build.gradle file:

    import java.util.regex.Matcher
    import java.util.regex.Pattern
    
    def getCurrentFlavor() {
        Gradle gradle = getGradle()
        String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
    
        Pattern pattern;
    
        if( tskReqStr.contains( "assemble" ) )
            pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
        else
            pattern = Pattern.compile("generate(\\w+)(Release|Debug)")
    
        Matcher matcher = pattern.matcher( tskReqStr )
    
        if( matcher.find() )
            return matcher.group(1).toLowerCase()
        else
        {
            println "NO MATCH FOUND"
            return "";
        }
    }
    
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            minifyEnabled true
    
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, "${variant.name}_v${variant.versionName}.apk")
                }
                def mappingFile = "${rootDir}\\app\\build\\outputs\\mapping\\${getCurrentFlavor()}\\release\\mapping.txt"
                println("mappingFile:  ${mappingFile}")
                if (variant.getBuildType().isMinifyEnabled()) {
                    variant.assemble.doLast {
                        copy {
                            from "${mappingFile}"
                            into "${rootDir}"
                            rename { String fileName ->
                                "mapping-${variant.name}.txt"
                            }
                        }
                    }
                }
            }
    
        }
    
        debug {
            minifyEnabled false
            useProguard false
    
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, "${variant.name}_v${variant.versionName}.apk")
                }
            }
        }
    
    }
    

提交回复
热议问题