Proguard Printmapping在Android Studio 2.0.0(和2.1.0)中不起作用

时间:2016-02-25 04:35:22

标签: android android-studio gradle proguard android-studio-2.0

使用gradle wrapper 2.10和Android Gradle构建工具 2.0.0-beta7 2.1.0

来自我的build.gradle:

buildTypes {
        all{
            minifyEnabled  true
            proguardFiles = [getDefaultProguardFile("proguard-android.txt"), 'proguard-project.pro'];
        }
    }

这很有效。事情被混淆了。

我的proguard-project.pro中也有以下行:

-printmapping my-mapping.txt

该文件中的其他所有内容都可以正常工作,但映射会一直打印到错误的位置:

Printing mapping to [C:\path\to\my\project\build\outputs\mapping\debug\mapping.txt]

此语法是否已更改?

注意:我尝试过提供直接路径。我试过提供一个没有连字符的名字。没有什么变化。

现在我刚刚为它做了一个gradle复制任务。

5 个答案:

答案 0 :(得分:9)

即使您未在build\outputs\mapping\debug\mapping.txt内指定-printmapping my-mapping.txt,位置proguard-project.pro上的映射文件也是默认生成的映射文件。我看到该名称始终为mapping.txt,因此使用新的Android Studio版本会忽略-printmapping

我记得曾经在proguard-project.pro存在的同一个项目根文件夹中生成但是我确认,它现在不会生成Android Studio 2.0,并且是一个可以在{{3 }}

更新

Android问题链接:Android Issue Tracker

答案 1 :(得分:3)

面对同样的问题,但似乎

{projectRoot}\build\outputs\mapping\debug\mapping.txt

是现在映射文件的正确位置

答案 2 :(得分:0)

也许你可以改为接下来

android {
    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'some-other-rules.txt'
            //proguardFile 'some-other-rules.txt' 
        }
    }
}

答案 3 :(得分:0)

尝试以管理员身份启动Android Studio。

-printmapping

可能无法写入导致此问题的系统文件夹。

答案 4 :(得分:0)

从Android Studio 3.5.3和AGP 3.5.3开始,遵守-printmapping参数。

例如使用:

-printmapping mapping.txt

它是从默认值复制的:

{projectRoot}\build\outputs\mapping\release\mapping.txt

收件人:

{projectRoot}\mapping.txt