混淆后Android应用程序崩溃,并且在调试版本中也接收到混淆日志

问题描述 投票:0回答:1

我正在研究一个Android应用,该应用处于SIT测试阶段。我的想法是向测试团队发布一个混淆了调试的版本。为此,我在build.gradle中添加了这段代码

buildTypes {
        debug {
            applicationIdSuffix ".debug"
            debuggable true
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
}

此后,我的apk文件减少了,对此我感到满意。但是当我运行该应用程序并进行服务呼叫时,该应用程序崩溃了。

更多的坏消息是我无法读取任何日志,因为日志采用这种格式-

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method f.f.b.i.b, parameter errorType
        at .a.f$a.<init>(Unknown Source:2)
        at .a.h.c.a(:38)
        at j.l.run(:83)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6944)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

[我注意到,当我将-dontobfuscate命令放在我的Proguard规则中时,它可以正常工作,否则会崩溃。我什至可以发现我的mapping.txt文件,但是我不知道如何解码该文件并读取日志。

我在这里做错什么了吗?

android crash proguard obfuscation
1个回答
0
投票

这可能与您使用Retrofit和Gson进行序列化有关。尝试将此行添加到您的Proguard配置中。

-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}
© www.soinside.com 2019 - 2024. All rights reserved.