【问题标题】:FileNotFoundException on proguard-rules.pro fileproguard-rules.pro 文件上的 FileNotFoundException
【发布时间】:2015-01-27 10:24:55
【问题描述】:

我正在使用 Android Studio v.1.0 我的构建文件:

  buildTypes {

    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

但是当我尝试发布版本时,我得到一个错误: 错误:任务 ':app:proguardRelease' 执行失败。

java.io.FileNotFoundException: F:....\app\proguard-rules.pro(找不到文件)

我认为,proguard-android.txt 是 Android SDK 的一部分,对吗?

为什么 Android Studio 找不到呢?

我也试过 proguard-android.pro - 结果相同

【问题讨论】:

  • 你是否在你的Project目录的根目录下创建了proguard-rules.pro文件?
  • 我应该手动添加吗?你能分享一下正确的方法吗?
  • 如果您没有任何特殊规则,请尝试空文件或删除 , 'proguard-rules.pro' 部分
  • 我不想删除 'proguard-rules.pro' - 我想在构建中加入 ProGuard。
  • 如果对您有帮助,请查看我的以下答案

标签: java android proguard


【解决方案1】:

如果您不需要任何特定的 ProGuard 配置:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt')
    }
}

(警告可能发生)

或者指定“规则”并放在这里:

.../app/proguard-rules.pro

例如,我使用“黄油刀”,我的 proguard-rules.pro 看起来像:

-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

或者,您可以保留 build.gradle 文件原样(如果您不喜欢警告),然后将一个空的 proguard-rules.pro 放到该位置。

【讨论】:

    【解决方案2】:
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    

    应用模块的 build.gradle 文件中的以下行表示 proguard 的脚本需要应用于您的发布版本。它有两个文件:

    1. proguard-android.txt:是默认的android proguard文件,可以 在 SDK 的 D:\SDK\tools\proguard 目录下找到。
    2. 'proguard-rules.pro':它包含您的应用程序特定的 proguard 脚本。您需要在您的根文件夹中创建此文件 应用。你所有的应用程序特定的proguard都应该在里面 这个文件。

    【讨论】:

      【解决方案3】:

      我已经创建了自己的 proguard-android.pro 文件,并且对我来说可以正常工作:

      -dontwarn org.apache.commons.**
      -dontwarn com.google.**
      -dontwarn com.j256.ormlite**
      -dontwarn org.apache.http**
      
      -keepattributes SourceFile,LineNumberTable
      -keep class com.j256.**
      -keepclassmembers class com.j256.** { *; }
      -keep enum com.j256.**
      -keepclassmembers enum com.j256.** { *; }
      -keep interface com.j256.**
      -keepclassmembers interface com.j256.** { *; }
      
      -keepattributes Signature
      # GSON Library
      # For using GSON @Expose annotation
      -keepattributes *Annotation*
      
      # Gson specific classes
      -keep class sun.misc.Unsafe { *; }
      #-keep class com.google.gson.stream.** { *; }
      
      # Application classes that will be serialized/deserialized over Gson
      -keep class com.google.gson.examples.android.model.** { *; }
      
      # Google Map
      -keep class com.google.android.gms.maps.** { *; }
      -keep interface com.google.android.gms.maps.** { *; }
      

      【讨论】:

        【解决方案4】:

        请检查根项目文件夹中的“proguard-rules.pro”。我从 Eclipse 导出的项目必须在根项目文件夹中创建“proguard-rules.pro”。

        【讨论】:

          【解决方案5】:

          解决方法是下载以下内容之一:

          http://dl.google.com/android/android-sdk_r22.6.2-linux.tgz
          http://dl.google.com/android/android-sdk_r22.6.2-windows.zip
          http://dl.google.com/android/android-sdk_r22.6.2-macosx.zip
          

          并复制以下文件:

          tools/hprof-conv
          tools/support/annotations.jar
          tools/proguard
          

          【讨论】:

            【解决方案6】:

            希望这个答案对未来有所帮助

            转到build.gradle(Module:app)

            buildTypes 中删除此部分

            debug {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-03-25
              • 1970-01-01
              • 2016-04-05
              • 2019-09-12
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多