【问题标题】:Proguard Printmapping not working in Android Studio 2.0.0 (and 2.1.0)Proguard Printmapping 在 Android Studio 2.0.0(和 2.1.0)中不起作用
【发布时间】:2016-06-07 16:53:41
【问题描述】:

使用 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 复制任务。

【问题讨论】:

  • 什么意思,错地方了?
  • @RaGe 在过去,该行会将映射文件放在项目根目录中。现在,无论该线指向何处,它总是会在构建文件夹中打印映射并且名称错误,
  • 我不熟悉过去是什么,但是如果你想把它放在一个特定的文件夹中,你应该尝试提供一个绝对路径。至于错误的名称,也许文件名中的连字符有问题?尝试用引号括起来。
  • 我已经做了所有这些,它没有改变。
  • -basedirectory 目录名怎么样(在您的 proguard.pro 文件中。为这些配置参数或此配置文件中的所有后续相对文件名指定基本目录。)?

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


【解决方案1】:

从 Android Studio 3.5.3 和 AGP 3.5.3 开始,-printmapping 参数受到尊重。

例如使用:

-printmapping mapping.txt

它是从默认复制而来的:

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

到:

{projectRoot}\mapping.txt

【讨论】:

    【解决方案2】:

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

    -printmapping
    

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

    【讨论】:

      【解决方案3】:

      位于build\outputs\mapping\debug\mapping.txt 的映射文件是默认生成的,即使您没有在proguard-project.pro 中指定-printmapping my-mapping.txt。我看到名字总是mapping.txt,所以-printmapping 被新的Android Studio 版本忽略了。

      我记得它曾经在 proguard-project.pro 所在的同一个项目根文件夹中生成,但我确认,它现在不会在 Android Studio 2.0 中生成,这是一个你可以在 Android Issue Tracker 提交的错误。


      更新

      Android 问题链接:https://code.google.com/p/android/issues/detail?id=205213

      【讨论】:

      【解决方案4】:

      也许你可以改成folwoing

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

      【讨论】:

      • 这没什么区别。
      【解决方案5】:

      面临同样的问题,但似乎

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

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

      【讨论】:

      • 感觉这个方法简直坏掉了。如果它不再起作用,为什么构建会在其中包含打印映射?
      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 2018-06-18
      • 2014-06-02
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多