【发布时间】:2018-08-04 04:53:39
【问题描述】:
应用程序在发布模式下运行时出现错误。
这是错误。
E/AndroidRuntime: 致命异常: main 进程:com.crazyhitty.chdev.ks.firebasechat,PID:20397 java.lang.IllegalArgumentException:表 k 中的未知列名“uid” 在 com.j256.ormlite.table.TableInfo.getFieldTypeByColumnName(未知来源) 在 com.j256.ormlite.stmt.Where.findColumnFieldType(未知来源) 在 com.j256.ormlite.stmt.Where.eq(未知来源) 在 com.crazyhitty.chdev.ks.firebasechat.d.f.a(未知来源) 在 com.crazyhitty.chdev.ks.firebasechat.ui.activities.PhoneAuthActivity.a(未知来源) 在 com.crazyhitty.chdev.ks.firebasechat.ui.activities.PhoneAuthActivity$5.onComplete(未知来源) 在 com.google.android.gms.tasks.zzf.run(未知来源) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5343) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
如错误中所述,java.lang.IllegalArgumentException: Unknown column name 'uid' in table k 但是,我没有任何表 k,而是我的表名为 user
这是我的 proguard 文件
-dontnote com.facebook.Session
-dontnote com.facebook.FacebookSdk
-keepnames class com.facebook.Session {}
-keepnames class com.facebook.FacebookSdk {}
-dontwarn com.google.android.gms.common.GooglePlayServicesUtil
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**
-dontwarn okio.**
-dontwarn com.squareup.okhttp3.**
-keep interface com.squareup.okhttp3.* { *; }
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**
-keep class com.google.common.collect.** { *; }
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
@com.facebook.common.internal.DoNotStrip *;
}
-keepclassmembers class * {
native <methods>;
}
-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-dontwarn javax.annotation.**
-dontwarn com.android.volley.toolbox.**
-dontwarn com.facebook.infer.**
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class android.support.v7.widget.SearchView { *; }
-dontwarn javax.annotation.concurrent.GuardedBy
-dontwarn com.android.installreferrer.api.**
-dontwarn com.google.firebase.appindexing.**
-keep class com.j256.**
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**
-keepclassmembers interface com.j256.** { *; }
-keep class org.greenrobot.eventbus.EventBusException{*;}
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
应用程序在调试模式下工作正常。但是对于发布模式,由于上述错误,我会崩溃。谁能帮帮我?
【问题讨论】:
-
在 proGuard
-keepattributes Signature和-keep class <our.package.name>.db.** { *; }中添加这一行 -
@MohammedFarhan 这没有帮助:(
-
当 ormlite 即将创建一个 dao 表时,它会为 POJO 类中的每个字段查找注释
@DatabaseField。也许您的 ProGuard 未能找到/或删除注释。请查看this