После включения proguard появляется ошибка StackOverflow
при сборке проекта.Сборка занимает почти час, после этого я получаю эту ошибку.
Полный журнал ошибок https://hastebin.com/wigodovasi.css:
Cause: java.lang.StackOverflowError
at com.android.build.gradle.shrinker.parser.GrammarActions.method(GrammarActions.java:302)
at com.android.build.gradle.shrinker.parser.GrammarActions.fieldOrAnyMember(GrammarActions.java:210)
at com.android.build.gradle.shrinker.parser.ProguardParser.member(ProguardParser.java:2280)
at com.android.build.gradle.shrinker.parser.ProguardParser.members(ProguardParser.java:1982)
at com.android.build.gradle.shrinker.parser.ProguardParser.classSpecification(ProguardParser.java:1599)
at com.android.build.gradle.shrinker.parser.ProguardParser.prog(ProguardParser.java:331)
at com.android.build.gradle.shrinker.parser.GrammarActions.parse(GrammarActions.java:64)
at com.android.build.gradle.shrinker.parser.GrammarActions.include(GrammarActions.java:82)
at com.android.build.gradle.shrinker.parser.ProguardParser.prog(ProguardParser.java:316)
at com.android.build.gradle.shrinker.parser.GrammarActions.parse(GrammarActions.java:64)
at com.android.build.gradle.shrinker.parser.GrammarActions.include(GrammarActions.java:82)
//Stacktrace containing repeated elements shortened
at com.android.build.gradle.shrinker.parser.GrammarActions.include(GrammarActions.java:82)
at com.android.build.gradle.shrinker.parser.ProguardParser.prog(ProguardParser.java:316)
at com.android.build.gradle.shrinker.parser.GrammarActions.parse(GrammarActions.java:64)
at com.android.build.gradle.shrinker.parser.GrammarActions.include(GrammarActions.java:82)
Файл Gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 27
defaultConfig {
applicationId "package_name"
minSdkVersion 15
targetSdkVersion 27
versionCode 5
versionName "1.0.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
multiDexEnabled true
}
signingConfigs {
release {
//key info
}
}
dexOptions {
javaMaxHeapSize "4g"
}
buildTypes {
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support.test:runner:1.0.2'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
implementation 'com.android.support:customtabs:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
implementation 'com.google.firebase:firebase-core:16.0.0'
implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.firebase:firebase-crash:16.0.0'
implementation 'com.google.firebase:firebase-config:16.0.0'
implementation 'com.google.android.gms:play-services-location:15.0.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
implementation 'com.google.android.gms:play-services-auth:15.0.1'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'com.google.code.gson:gson:2.8.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
implementation 'com.squareup.picasso:picasso:2.5.2'
implementation ('com.facebook.android:facebook-android-sdk:4.33.0') {
exclude module: 'support-compat'
}
implementation ('com.appyvet:materialrangebar:1.4.1') {
exclude module: 'support-compat'
}
}
apply plugin: 'com.google.gms.google-services'
Файл Proguard
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
public *;
}
# Uncomment this to preserve the line number information for
# debugging stack traces.
-include proguard-rules.pro
-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
-renamesourcefileattribute SourceFile
# Proguard rules that are applied to your test apk/code.
-ignorewarnings
-keepattributes *Annotation*
-dontnote junit.framework.**
-dontnote junit.runner.**
-dontwarn android.test.**
-dontwarn android.support.test.**
-dontwarn org.junit.**
-dontwarn org.hamcrest.**
-dontwarn com.squareup.javawriter.JavaWriter
# Uncomment this if you use Mockito
#-dontwarn org.mockito.**
# Support design
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }
# Appcompat Support v7
-keep public class android.support.v7.widget.** { *; }
-keep public class android.support.v7.internal.widget.** { *; }
-keep public class android.support.v7.internal.view.menu.** { *; }
-keep public class * extends android.support.v4.view.ActionProvider {
public <init>(android.content.Context);
}
# Cardview
-keep class android.support.v7.widget.RoundRectDrawable { *; }
# support constraint
-dontwarn android.support.constraint.**
-keep class android.support.constraint.** { *; }
-keep interface android.support.constraint.** { *; }
-keep public class android.support.constraint.R$* { *; }
# Retrofit
# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
# Okio
-dontwarn okio.**
# -keep class com.example.app.json.** { *; }
-keep class package_name.models.** { *; }
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
# -keep class com.google.gson.examples.android.model.** { *; }
# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Picasso
-dontwarn com.squareup.okhttp.**
# OkHttp 3
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
# Facebook
-keepclassmembers class * implements java.io.Serializable {
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
-keepnames class com.facebook.FacebookActivity
-keepnames class com.facebook.CustomTabActivity
-keep class com.facebook.all.All
-keep public class com.android.vending.billing.IInAppBillingService {
public static com.android.vending.billing.IInAppBillingService asInterface(android.os.IBinder);
public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle);
}
# Material Rangebar
-keep class com.appyvet.** { *; }