当我使用 minifyEnabled 应用程序时不断崩溃
Posted
技术标签:
【中文标题】当我使用 minifyEnabled 应用程序时不断崩溃【英文标题】:when i use minifyEnabled app keep crashing 【发布时间】:2019-10-12 05:23:46 【问题描述】:最近我开发了一个安卓应用。 一切都很顺利,但是当我使用“minifyEnabled true”时,应用程序不断崩溃并出现此错误:
com.google.gson.internal.LinkedTreeMap$1
java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
org.matrix.androidsdk.data.cryptostore.db.HelperKt.serializeForRealm(:102)
org.matrix.androidsdk.data.cryptostore.db.model.DeviceInfoEntity.putDeviceInfo(:43)
org.matrix.androidsdk.data.cryptostore.db.RealmCryptoStore$storeUserDevices$1.invoke(:244)
org.matrix.androidsdk.data.cryptostore.db.RealmCryptoStore$storeUserDevices$1.invoke(:44)
org.matrix.androidsdk.data.cryptostore.db.HelperKt$doRealmTransaction$1.execute(:86)
io.realm.Realm.a(:1493)
org.matrix.androidsdk.data.cryptostore.db.HelperKt.doRealmTransaction(:86)
org.matrix.androidsdk.data.cryptostore.db.RealmCryptoStore.storeUserDevices(:228)
org.matrix.androidsdk.crypto.MXDeviceList$4$1.run(:605)
android.os.Handler.handleCallback(Handler.java:815)
android.os.Handler.dispatchMessage(Handler.java:104)
android.os.Looper.loop(Looper.java:227)
android.os.HandlerThread.run(HandlerThread.java:61)
我在 proguard 配置文件中尝试了很多更改,但问题仍然存在
【问题讨论】:
【参考方案1】:看起来 Proguard 无法正确处理 LinkedTreeMap。尝试添加一条规则以跳过此类到位于 app 文件夹内的 proguard-rules.pro 文件
-keep class [full class name] *;
【讨论】:
你的意思是-keep class com.google.gson.internal.LinkedTreeMap *; 是的!您可以试一试,但我认为问题出在您的 proguard 规则集中,您是否将以下规则添加到您的 proguard 文件中? rules以上是关于当我使用 minifyEnabled 应用程序时不断崩溃的主要内容,如果未能解决你的问题,请参考以下文章
当 minifyenabled 为 true 时,Tesseract 错误 java.lang.NoSuchFieldError
仅针对外部库将“minifyEnabled”设置为“false”
设置 minifyEnabled 为 true 时无法使用 GSON 解析 json 对象
Android proguard minifyEnabled true + multidex = error