transformClassesAndResourcesWithProguardForRelease 失败
transformClassesAndResourcesWithProguardForRelease FAILED
我正在尝试在控制台中使用 Gradle 构建我的 Android 应用程序。
但是关于任务 ':app:transformClassesAndResourcesWithProguardForRelease':
出现以下错误
build.gradle:
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'
gradle-wrapper.properties
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'.
尝试将此代码添加到您的 proGuard 规则中,它对我有用
-ignorewarnings
-keep class * {
public private *;
}
答案张贴在这里:
Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease
将此代码添加到 ..your-project/app/proguard-rules.pro
-ignorewarnings
您签名的apk将生成成功...
Update :
That's better to fix your warning messages using -dontwarn
or -keep
keys on your proguard-rules.pro
... Because if you use (maybe your libraries) java reflection in your code the application will be crashed...
它对我有用我还必须在 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 * {*;}
注意:以上命令忽略混淆
可以在上面使用这个来保存混淆状态
-保留名称 class * {*;}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
请删除您 gradle 中的上述代码。这对我有用。
这仅适用于给定的问题。
在 Android Studio 中单击 "Build" 菜单中的 "Rebuild Project"。
我已经与 proguard-rules.pro 斗争了很长一段时间,但绝不是专业人士!
我正在发布我的文件以表明你不应该 -keep class * 没有任何参数,因为这会关闭所有混淆。但是,您可以保护从某个 class 扩展的每个 class 或实现某个接口的任何 class。您还可以保护任何具有包含特定元素的构造函数的 class。
请注意,我没有对每一行都进行评论,因为我不能 100% 确定所有内容的作用——这更像是一种有根据的猜测。
我的项目包括 ksoap2(okhttp3、okio、XmlPull),这是许多规则的用途。
也许这可以作为您的起点 - 您可能仍然需要为您的 classes 添加一些额外的规则。
-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 中构建发布版本时收到相同的错误消息
这些是我遵循的步骤,
- 完成他们在 react-native-firebase 文档中提到的所有配置。
使用此命令构建 android 应用程序
./gradlew assembleRelease
收到此错误消息。
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
Job failed, see logs for details
通过更改 android/app/build 中的此代码行解决了此问题。gradle
minifyEnabled true
至此
minifyEnabled enableProguardInReleaseBuilds
这是我所做的唯一更改。它对我有用。
添加
-忽略警告
在你的混淆文件中,只保留那些你不想混淆的 class 。
如果您正在使用,一些库建议保留一些 classes
混淆规则。访问您的图书馆了解详情
由于 Android
的警告而收到此问题
见评论:
https://github.com/flutter/flutter/issues/40218#issuecomment-531047713
将以下规则添加到 /android/app/proguard-rules.pro:
-dontwarn android.**
将此行添加到 gradle 属性
android.enableR8=true
我正在尝试在控制台中使用 Gradle 构建我的 Android 应用程序。 但是关于任务 ':app:transformClassesAndResourcesWithProguardForRelease':
出现以下错误build.gradle:
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'
gradle-wrapper.properties
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'.
尝试将此代码添加到您的 proGuard 规则中,它对我有用
-ignorewarnings
-keep class * {
public private *;
}
答案张贴在这里: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease
将此代码添加到 ..your-project/app/proguard-rules.pro
-ignorewarnings
您签名的apk将生成成功...
Update :
That's better to fix your warning messages using
-dontwarn
or-keep
keys on yourproguard-rules.pro
... Because if you use (maybe your libraries) java reflection in your code the application will be crashed...
它对我有用我还必须在 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 * {*;}
注意:以上命令忽略混淆
可以在上面使用这个来保存混淆状态
-保留名称 class * {*;}
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
请删除您 gradle 中的上述代码。这对我有用。 这仅适用于给定的问题。
在 Android Studio 中单击 "Build" 菜单中的 "Rebuild Project"。
我已经与 proguard-rules.pro 斗争了很长一段时间,但绝不是专业人士! 我正在发布我的文件以表明你不应该 -keep class * 没有任何参数,因为这会关闭所有混淆。但是,您可以保护从某个 class 扩展的每个 class 或实现某个接口的任何 class。您还可以保护任何具有包含特定元素的构造函数的 class。 请注意,我没有对每一行都进行评论,因为我不能 100% 确定所有内容的作用——这更像是一种有根据的猜测。 我的项目包括 ksoap2(okhttp3、okio、XmlPull),这是许多规则的用途。
也许这可以作为您的起点 - 您可能仍然需要为您的 classes 添加一些额外的规则。
-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.** { *; }
这些是我遵循的步骤,
- 完成他们在 react-native-firebase 文档中提到的所有配置。
使用此命令构建 android 应用程序
./gradlew assembleRelease
收到此错误消息。
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
Job failed, see logs for details
通过更改 android/app/build 中的此代码行解决了此问题。gradle
minifyEnabled true
至此
minifyEnabled enableProguardInReleaseBuilds
这是我所做的唯一更改。它对我有用。
添加 -忽略警告 在你的混淆文件中,只保留那些你不想混淆的 class 。 如果您正在使用,一些库建议保留一些 classes 混淆规则。访问您的图书馆了解详情
由于 Android
的警告而收到此问题
见评论:
https://github.com/flutter/flutter/issues/40218#issuecomment-531047713
将以下规则添加到 /android/app/proguard-rules.pro:
-dontwarn android.**
将此行添加到 gradle 属性
android.enableR8=true