簡體   English   中英

當 minifyEnabled 為真時,Android 應用程序崩潰

[英]Android app crashes when minifyEnabled is true

我正在使用多模塊應用程序,當installed模塊的 build.gradle 中的minifyEnabled true時,應用程序崩潰。

以下是我從游戲控制台檢索到的去混淆后的堆棧跟蹤。

 FATAL EXCEPTION: ControllerMessenger
Process: com.packagename, PID: 16978
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
    at com.packagename.login.Utils.AuthenticationActions.saveCredentials(AuthenticationActions.java)
    at com.packagename.login.LoginActivity$1$1.onCompleted(LoginActivity.java)
    at com.packagename.login.LoginActivity$1$1.onCompleted(LoginActivity.java)
    at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java)
    at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java)
    at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java)
    at com.koushikdutta.ion.IonRequestBuilder$EmitterTransform$1.onCompleted(IonRequestBuilder.java)
    at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java)
    at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java)
    at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java)
    at com.koushikdutta.ion.IonRequestBuilder$1.run(IonRequestBuilder.java)
    at com.koushikdutta.async.AsyncServer$RunnableWrapper.run(AsyncServer.java)
    at android.os.Handler.handleCallback(Handler.java:746)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at androidx.test.espresso.base.Interrogator.a(Interrogator.java:19)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:166)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:158)
    at androidx.test.espresso.base.UiControllerImpl.a(UiControllerImpl.java:34)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:77)
    at androidx.test.espresso.action.MotionEvents.a(MotionEvents.java:52)
    at androidx.test.espresso.action.Tap.c(Tap.java:8)
    at androidx.test.espresso.action.Tap.b(Tap.java:18)
    at androidx.test.espresso.action.Tap$1.a(Tap.java:3)
    at androidx.test.espresso.action.GeneralClickAction.perform(GeneralClickAction.java:22)
    at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform(ViewInteraction.java:9)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:79)
    at androidx.test.espresso.ViewInteraction.a(ViewInteraction.java:96)
    at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:3)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at android.os.Handler.handleCallback(Handler.java:746)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5459)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

我無法理解此代碼對應於'java.lang.Object java.util.List.get(int)'內容

我正在使用多個外部庫,其中之一是ion koush

我嘗試將其添加到我的項目中的 proguard-rules.pro 文件中-keep class com.koushikdutta.** { *;} 但這並沒有取得任何成功。

當您的應用程序將 json 轉換為 POJO 並且您啟用了 minify 時,就會發生這種情況。 縮小更改那些使轉換變得不可能的 POJO(它會編譯,但你所有的 POJO 屬性都將為空)。

讓那些 POJO 添加-keep class com.packagename.<path to pojos> {*; } -keep class com.packagename.<path to pojos> {*; }到你的 proguard-rules 文件。

還要在所有 Pojo 文件的類名上方添加“@Keep”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM