Android 除臭文件不存在';这个例外不起作用

Android 除臭文件不存在';这个例外不起作用,android,obfuscation,deobfuscation,android-r8,Android,Obfuscation,Deobfuscation,Android R8,我已将DeobFousate文件上载到控制台,但。。。DeobFousate文件在出现此异常时似乎无法正常工作。我正在用新的R8系统而不是proguard来混淆代码,因为我使用的是上一个android studio,但这在proguard之前也发生过。我可以通过以下文字在我的google play开发者控制台中看到很多异常: java.lang.NullPointerException: at com.myapp.Util.capitalize (Util.java) or

我已将DeobFousate文件上载到控制台,但。。。DeobFousate文件在出现此异常时似乎无法正常工作。我正在用新的R8系统而不是proguard来混淆代码,因为我使用的是上一个android studio,但这在proguard之前也发生过。我可以通过以下文字在我的google play开发者控制台中看到很多异常:

java.lang.NullPointerException: 
  at com.myapp.Util.capitalize (Util.java)
  or                     .clearRAM (Util.java)
  or                     .firstCharToUpperCase (Util.java)
  or                     .formatSize (Util.java)
  or                     .getBenchmarkResultsMap (Util.java)
  or                     .getColorFromStyle (Util.java)
  or                     .getLocaleStringResource (Util.java)
  or                     .getStringList (Util.java)
  or                     .goToAppSettingsDialog (Util.java)
  or                     .persistInt (Util.java)
  or                     .persistString (Util.java)
  or                     .persistStringArrayList (Util.java)
  or                     .sendEmail (Util.java)
  or                     .share (Util.java)
  at com.myapp.SystemInfoHelper.getExternalSdCardTotalSize (SystemInfoHelper.java)
  or                     .getFormattedExternalSdCardSize (SystemInfoHelper.java)
  at com.myapp.SystemInfoStringBuilder.getSystemSummaryList (SystemInfoStringBuilder.java)
  at com.myapp.activities.MainActivity$5$1.run (MainActivity.java)
  at android.os.Handler.handleCallback (Handler.java:739)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:145)
  at android.app.ActivityThread.main (ActivityThread.java:6134)
  at java.lang.reflect.Method.invoke (Method.java)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1399)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1194)
  at de.robv.android.xposed.XposedBridge.main (XposedBridge.java:95)
正如您所看到的,它没有告诉您哪一行或哪一个函数是问题所在,而是告诉您“at,or,at,or”,而没有说明崩溃在哪里


如何解决此问题?

当从元数据中删除行号时,堆栈跟踪将不包括行号,这会使查看问题发生的位置变得更加困难。您可以向R8配置中添加
--keepattributes LineNumberTable
,以保留这些配置

不幸的是,这无助于你目前的处境。 在这种情况下,我建议从以下几点开始:

com.myapp.SystemInfoStringBuilder.getSystemSummaryList

并确定是否需要:

com.myapp.SystemInfoHelper.getexternalsdcardtottalsize

com.myapp.SystemInfoHelper.getFormattedExternalSdCardSize

如果它同时调用这两个名称(基于它可能调用的名称),那么下一步将变得更加繁重

从该方法确定调用了
com.myapp.Util
的哪些方法。 请注意,您还可以通过调查代码来确定它们是否会实际引发NullPointerException,从而消除
com.myapp.Util
的一些方法

最后一个选项是在Kotlin中编码,因为它将强制您显式允许给定变量或参数为null