mirror of
https://github.com/tuskyapp/Tusky
synced 2025-01-05 13:28:42 +01:00
7a05530359
Regression from #4291 // cc @cbeyls <details> <summary>Stacktrace</summary> ``` Process: com.keylesspalace.tusky, PID: 31230 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.keylesspalace.tusky/com.keylesspalace.tusky.components.accountlist.AccountListActivity}: java.lang.RuntimeException: java.lang.NoSuchMethodException: h4.a.values [] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3635) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7839) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: h4.a.values [] at java.lang.Enum.enumValues(Enum.java:270) at java.lang.Enum.access$000(Enum.java:61) at java.lang.Enum$1.create(Enum.java:277) at java.lang.Enum$1.create(Enum.java:275) at libcore.util.BasicLruCache.get(BasicLruCache.java:63) at java.lang.Enum.getSharedConstants(Enum.java:289) at java.lang.Enum.valueOf(Enum.java:243) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1409) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427) at android.os.Parcel.readSerializable(Parcel.java:3507) at android.os.Parcel.readValue(Parcel.java:3277) at android.os.Parcel.readArrayMapInternal(Parcel.java:3623) at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292) at android.os.BaseBundle.unparcel(BaseBundle.java:236) at android.os.BaseBundle.getSerializable(BaseBundle.java:1268) at android.os.Bundle.getSerializable(Bundle.java:1104) at android.content.Intent.getSerializableExtra(Intent.java:8575) at com.keylesspalace.tusky.components.accountlist.AccountListActivity.onCreate(SourceFile:23) at android.app.Activity.performCreate(Activity.java:8051) at android.app.Activity.performCreate(Activity.java:8031) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7839) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) Caused by: java.lang.NoSuchMethodException: h4.a.values [] at java.lang.Class.getMethod(Class.java:2103) at java.lang.Class.getDeclaredMethod(Class.java:2081) at java.lang.Enum.enumValues(Enum.java:267) at java.lang.Enum.access$000(Enum.java:61) at java.lang.Enum$1.create(Enum.java:277) at java.lang.Enum$1.create(Enum.java:275) at libcore.util.BasicLruCache.get(BasicLruCache.java:63) at java.lang.Enum.getSharedConstants(Enum.java:289) at java.lang.Enum.valueOf(Enum.java:243) at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1841) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1409) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427) at android.os.Parcel.readSerializable(Parcel.java:3507) at android.os.Parcel.readValue(Parcel.java:3277) at android.os.Parcel.readArrayMapInternal(Parcel.java:3623) at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:292) at android.os.BaseBundle.unparcel(BaseBundle.java:236) at android.os.BaseBundle.getSerializable(BaseBundle.java:1268) at android.os.Bundle.getSerializable(Bundle.java:1104) at android.content.Intent.getSerializableExtra(Intent.java:8575) at com.keylesspalace.tusky.components.accountlist.AccountListActivity.onCreate(SourceFile:23) at android.app.Activity.performCreate(Activity.java:8051) at android.app.Activity.performCreate(Activity.java:8031) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3608) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3792) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7839) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) ``` </details> closes #4297
116 lines
4.6 KiB
Prolog
116 lines
4.6 KiB
Prolog
# GENERAL OPTIONS
|
|
|
|
-allowaccessmodification
|
|
|
|
# Preserve some attributes that may be required for reflection.
|
|
-keepattributes RuntimeVisible*Annotations, AnnotationDefault
|
|
|
|
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
|
-keepclasseswithmembernames class * {
|
|
native <methods>;
|
|
}
|
|
|
|
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
|
-keepclassmembers,allowoptimization enum * {
|
|
public static **[] values();
|
|
public static ** valueOf(java.lang.String);
|
|
}
|
|
|
|
-keepclassmembers class * implements android.os.Parcelable {
|
|
public static final ** CREATOR;
|
|
}
|
|
|
|
# Preserve annotated Javascript interface methods.
|
|
-keepclassmembers class * {
|
|
@android.webkit.JavascriptInterface <methods>;
|
|
}
|
|
|
|
# The support libraries contains references to newer platform versions.
|
|
# Don't warn about those in case this app is linking against an older
|
|
# platform version. We know about them, and they are safe.
|
|
-dontnote androidx.**
|
|
-dontwarn androidx.**
|
|
|
|
# This class is deprecated, but remains for backward compatibility.
|
|
-dontwarn android.util.FloatMath
|
|
|
|
# These classes are duplicated between android.jar and core-lambda-stubs.jar.
|
|
-dontnote java.lang.invoke.**
|
|
|
|
# TUSKY SPECIFIC OPTIONS
|
|
|
|
# keep members of our model classes, they are used in json de/serialization
|
|
-keepclassmembers class com.keylesspalace.tusky.entity.* { *; }
|
|
|
|
-keep public enum com.keylesspalace.tusky.entity.*$** {
|
|
**[] $VALUES;
|
|
public *;
|
|
}
|
|
|
|
-keepclassmembers class com.keylesspalace.tusky.components.conversation.ConversationAccountEntity { *; }
|
|
-keepclassmembers class com.keylesspalace.tusky.db.DraftAttachment { *; }
|
|
|
|
-keep enum com.keylesspalace.tusky.db.DraftAttachment$Type {
|
|
public *;
|
|
}
|
|
|
|
# https://github.com/google/gson/blob/master/examples/android-proguard-example/proguard.cfg
|
|
|
|
# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
|
|
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
|
|
-keep class * extends com.google.gson.TypeAdapter
|
|
-keep class * implements com.google.gson.TypeAdapterFactory
|
|
-keep class * implements com.google.gson.JsonSerializer
|
|
-keep class * implements com.google.gson.JsonDeserializer
|
|
|
|
# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher.
|
|
-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken
|
|
-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken
|
|
|
|
# Retain generic signatures of classes used in MastodonApi so Retrofit works
|
|
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
|
-keep,allowobfuscation,allowshrinking class kotlin.collections.List
|
|
-keep,allowobfuscation,allowshrinking class kotlin.collections.Map
|
|
-keep,allowobfuscation,allowshrinking class retrofit2.Call
|
|
|
|
# https://github.com/square/retrofit/pull/3563
|
|
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
|
|
|
|
# preserve line numbers for crash reporting
|
|
-keepattributes SourceFile,LineNumberTable
|
|
-renamesourcefileattribute SourceFile
|
|
|
|
# Bouncy Castle -- Keep EC
|
|
-keep class org.bouncycastle.jcajce.provider.asymmetric.EC$* { *; }
|
|
-keep class org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi$EC
|
|
|
|
# remove all logging from production apk
|
|
-assumenosideeffects class android.util.Log {
|
|
public static *** getStackTraceString(...);
|
|
public static *** d(...);
|
|
public static *** w(...);
|
|
public static *** v(...);
|
|
public static *** i(...);
|
|
}
|
|
-assumenosideeffects class java.lang.String {
|
|
public static java.lang.String format(...);
|
|
}
|
|
|
|
# remove some kotlin overhead
|
|
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
|
|
static void checkNotNull(java.lang.Object);
|
|
static void checkNotNull(java.lang.Object, java.lang.String);
|
|
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkNotNullParameter(java.lang.Object, java.lang.String);
|
|
static void checkExpressionValueIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkNotNullExpressionValue(java.lang.Object, java.lang.String);
|
|
static void checkReturnedValueIsNotNull(java.lang.Object, java.lang.String);
|
|
static void checkReturnedValueIsNotNull(java.lang.Object, java.lang.String, java.lang.String);
|
|
static void throwUninitializedPropertyAccessException(java.lang.String);
|
|
}
|
|
|
|
# Preference fragments can be referenced by name, ensure they remain
|
|
# https://github.com/tuskyapp/Tusky/issues/3161
|
|
-keep class * extends androidx.preference.PreferenceFragmentCompat
|