首页 > 解决方案 > Android 应用程序因 exception.class.missing._Unknown_ 而崩溃

问题描述

我刚刚发布了我的应用程序的最新版本,但我在 Google Play 控制台中看到一些用户的崩溃。

exception.class.missing._Unknown_: 
  at com.android.icu.util.regex.PatternNative.compileImpl (Native Method)
  at com.android.icu.util.regex.PatternNative.<init> (PatternNative.java:39)
  at com.android.icu.util.regex.PatternNative.create (PatternNative.java:35)
  at java.util.regex.Pattern.compile (Pattern.java:1426)
  at java.util.regex.Pattern.<init> (Pattern.java:1401)
  at java.util.regex.Pattern.compile (Pattern.java:959)
  at com.mymedia.android.tracker.custom.MyInputFilter.<init> (MyInputFilter.java:30)

这是说它找不到本机类/方法com.android.icu.util.regex.PatternNative.compileImpl()吗?还是我的班级MyInputFilter

我为这个新版本做了一些不同的事情,我想知道这可能是造成这种情况的原因。

  1. 我发布了一个 App Bundle 而不是 APK。
  2. 我在 build.gradle 中添加了这些 Proguard / 收缩和混淆设置。
buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        debuggable false
    }
}

我查看了 Proguard 构建输出文件usage.txt,但没有看到任何提及PatternNative被删除或任何可能导致此问题的内容。

标签: androidexceptionpattern-matchinggoogle-play-consoleproduction

解决方案


您的问题可能是您的正则表达式在MyInputFilter.java:30. proguard-rules.pro尝试通过将这些行添加到您的文件中来防止混淆您的类字段:

-keepclassmembers class com.mymedia.android.tracker.custom.MyInputFilter {
    *;
}

推荐阅读