使用proguard时执行失败

时间:2018-12-12 12:26:58

标签: android-studio proguard

我正在使用Android Studio v.3。

这是我的构建文件:

...
    buildTypes {
        debug {
            minifyEnabled true
            // Uses new built-in shrinker http://tools.android.com/tech-docs/new-build-system/built-in-shrinker
            useProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguardTest-rules.pro'
        }

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

但是当我尝试发布版本时,出现以下错误:

  

org.gradle.execution.MultipleBuildFailures:构建完成,共1个   失败。在   org.gradle.initialization.DefaultGradleLauncher $ ExecuteTasks.run(DefaultGradleLauncher.java:370)     在   org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)     在   org.gradle.internal.operations.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)     在   org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)     在   org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)     在   org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)     在   org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:231)     在   org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)     在   org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:133)     在     在com.android.builder.tasks.Job.runTask(Job.java:47)处   com.android.build.gradle.tasks.SimpleWorkQueue $ EmptyThreadContext.runTask(SimpleWorkQueue.java:41)     在com.android.builder.tasks.WorkQueue.run(WorkQueue.java:282)... 1   更多

出什么问题了?

1 个答案:

答案 0 :(得分:2)

 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

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

  1. 手动创建proguard-rules.pro。您需要在应用程序的根文件夹中创建此文件。
  2. proguard-rules.pro包含您的应用程序专用的proguard脚本。您所有应用程序专用的proguard都应位于此文件中。

例如,如果您从jjwt库中使用,则必须将此行添加到proguard-rules.pro文件中:

-keepattributes InnerClasses

-keep class io.jsonwebtoken.** { *; }
-keepnames class io.jsonwebtoken.* { *; }
-keepnames interface io.jsonwebtoken.* { *; }

-keep class org.bouncycastle.** { *; }
-keepnames class org.bouncycastle.** { *; }
-dontwarn org.bouncycastle.**