android - 如何使用 gradle 和 proguard printmapping 创建带有版本代码的 out.map 文件

标签 android proguard android-gradle-plugin

我正在使用此文件构建 release.apk 文件。

android {
   compileSdkVersion 21
   buildToolsVersion '20.0.0'
   signingConfigs {
      ...
   }
   buildTypes {
    debug {
        debuggable true
        jniDebugBuild true
    }
    release {
        runProguard true
        proguardFile('proguard-project.txt')
        debuggable false
        signingConfig signingConfigs.release
       }
   }
   defaultConfig {
       minSdkVersion 14
       targetSdkVersion 21
   }
   productFlavors {
   }
   lintOptions {
    disable 'ValidFragment'
   }

在 proguard-project.txt 我有这个:

-printmapping build\outputs\apk\out.map

一切正常,我只想让 out.map 文件名包含版本代码,例如 out.29.map,其中 29 是版本代码。

谢谢

最佳答案

原来是这样

先定义一个获取版本名的函数

def getVersionName() {
    File stringsXmlFile = new File("src\\main\\res\\values\\strings.xml")
    String contents = stringsXmlFile.getText()
    String version = contents.find("<string name=\"version\">[^<]*</string>");
    version = version.replace("<string name=\"version\">", "").replace("string>", "")
    version = version.replace("<", "")
    version = version.substring(0, version.length() - 1)

    return version
}

二、定义任务函数

gradle.taskGraph.afterTask { Task task, TaskState state ->
    if (task.name.equals("assembleRelease")) {

        File proguard = new File("build\\outputs\\apk\\out.map")
        proguard.renameTo("build\\outputs\\apk\\out-" + getVersionName() + ".map")

    }
}

就是这样。

关于android - 如何使用 gradle 和 proguard printmapping 创建带有版本代码的 out.map 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360913/

相关文章:

android - 如何在android中裁剪图像?

java - 根据单击的项目膨胀操作模式菜单

android - Proguard 剥离了实现接口(interface)。运行时引发 java.lang.IncompleteClassChangeError

android - 构建 Android Studio 示例时出错

android - 无法读取 PNG 签名 : file does not start with PNG signature

android - 在不重新安装应用程序的情况下更新 native 库

java - Android:从秒数转换时的日期不正确

Android simplexml.jar混淆问题

android - 在proguard Android中保留 Assets 文件夹

android-studio - 如何在构建gradle之前启用文件的默认索引?