转换类和资源与 ProguardForrelease 失败

我正在尝试在控制台中用 Gradle 构建我的 Android 应用程序。 但是低于任务的错误“ : app: formClassesAndResourcesWithProguardForrelease”:

打造:

buildscript {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.google.gms:google-services:3.0.0'
}
}


allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}


task clean(type: Delete) {
delete rootProject.buildDir
}

App/build.gradle

apply plugin: 'com.android.application'


android {
compileSdkVersion 24
buildToolsVersion '24.0.2'
defaultConfig {
applicationId "com.XXX.XXX"
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "0.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}




dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile('com.squareup.retrofit2:retrofit:2.1.0') {
exclude module: 'okhttp'
}
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.retrofit2:converter-moshi:2.1.0'
compile 'moe.banana:moshi-jsonapi:2.2.0'
compile 'com.squareup.moshi:moshi-adapters:1.3.1'
compile 'com.google.android.gms:play-services-maps:9.6.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.firebase:firebase-core:9.6.0'
compile 'com.google.firebase:firebase-crash:9.6.0'
testCompile 'junit:junit:4.12'
}


apply plugin: 'com.google.gms.google-services'

梯级包装纸,性能

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

./gradlew build —— stacktrace

这是我收到的例外:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task
':app:transformClassesAndResourcesWithProguardForRelease'.
62807 次浏览

试试把这个代码加到你的专业守护者规则里,对我很管用

-ignorewarnings
-keep class * {
public private *;
}

答案贴在这里: 任务执行失败: app: formClassesAndResourcesWithProguardForrelease

将此代码添加到 ..your-project/app/proguard-rules.pro

 -ignorewarnings

你的签名 APK 将成功生成..。

更新:

最好使用 -dontwarn-keep修复您的警告消息 键在您的 proguard-rules.pro... 因为如果您使用(可能是您的库) 爪哇反射在您的代码中的应用程序将崩溃..。

这对我很有用,我还必须在 pro-gaurd.txt 文件中添加如下内容

#### -- Picasso --
-dontwarn com.squareup.picasso.**


#### -- OkHttp --


-dontwarn com.squareup.okhttp.internal.**


#### -- Apache Commons --


-dontwarn org.apache.commons.logging.**


-ignorewarnings
-keep class * {
public private protected *;
}

我没有改变什么,只是评论

// shrinkResources true
// minifyEnabled true

你不想改变任何前卫文件我已经搜索了这个问题后浪费了2天

在「 proguard-rules.pro 」中使用此代码可能会解决问题。

-keep class * {
public private protected *;
}

或者

-keep class * {*;}
  • 注意: 以上命令忽略模糊处理

  • 可以使用这个代替上面的保存模糊状态

    - keepname 类 * { * ; }

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

请删除上述代码在您的年级。这为我工作。 这只是针对给定的问题。

在 Android Studio 中,单击“ Build”菜单中的“ Rebuild Project”。

我已经和 proguard-rules.pro 斗争了很长时间了,我绝对不是这里的专业人士! 我张贴我的文件,以显示您不应该-保持类 * 没有任何参数,因为这关闭所有混淆。但是,您可以保护从某个类扩展的每个类或实现某个接口的任何类。您还可以保护具有具有特定元素的构造函数的任何类。 请注意,我没有评论每一行,因为我不是100% 确定每一件事是什么-这更像是一个有根据的猜测。 我的项目包括 ksoap2(okhttp3,okio,XmlPull) ,这就是许多规则的用途。

也许这可以作为你的一个起点-你仍然需要为你的类添加一些额外的规则。

-android
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable


-keep public class * extends android.app.Activity
-keepclasseswithmembers class * extends com.way4net.oner.lifa.plugin.ThemedFragment
-keepclasseswithmembers class * extends com.way4net.oner.lifa.plugin.ThemedActivity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keepattributes Signature #there were 1 classes trying to access generic signatures using reflection emfehlung von proguard selbst


-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}


-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}


-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}


-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}


-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}


-keepclassmembers class **.R$* {
public static <fields>;
}


-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}


-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn android.support.v4.**
#-dontwarn javax.annotation.**
#-dontwarn org.xmlpull.v1.**
-dontnote android.net.http.*
-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**
-dontnote okhttp3.**
-dontnote org.kobjects.util.**
-dontnote org.xmlpull.v1.**
-keep class okhttp3.** {
*;
}


-keep class org.xmlpull.v1.XmlSerializer {
*;
}
-keep class org.xmlpull.v1.XmlPullParser{
*;
}
-dontwarn org.xmlpull.v1.XmlPullParser


-keep class org.xmlpull.v1.XmlSerializer {
*;
}
-dontwarn org.xmlpull.v1.XmlSerializer


-keep class org.kobjects.** { *; }
-keep class org.ksoap2.** { *; }
-keep class okio.** { *; }
-keep class org.kxml2.** { *; }
-keep class org.xmlpull.** { *; }

当我试图在安装 反应-自然-火力基地之后在 android 中构建发布版本时,我得到了相同的错误消息。

这些是我遵循的步骤,

  1. 执行它们在 response-national-firebase 文档中提到的所有配置。
  2. 使用以下命令构建一个 android 应用程序

    ./gradlew 集合发布

  3. 收到这条错误信息。

失败: 构建失败,有异常。

  • 错误: 任务执行失败‘ : app: formClassesAndResourcesWithProguardForrelease’。

    作业失败,详见日志

通过在 Android/app/build.gradle中更改此代码行解决了此问题

minifyEnabled true

这个

minifyEnabled enableProguardInReleaseBuilds

这是我唯一的改变,对我有效。

无视警告 并且只保留那些您不想混淆的类。 一些库建议,如果您使用 访问您的库了解详细信息

由于来自 Android 的警告而出现这个问题
参见评论: Https://github.com/flutter/flutter/issues/40218#issuecomment-531047713

在/android/app/ proguard-rules.pro 中添加以下规则:
-dontwarn android.**

将此线添加到渐变属性

android.enableR8=true