我刚刚发布了我的应用程序的最新版本,但我在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.compaileImpl((吗?还是我的类MyInputFilter?
我为这个新版本做了一些不同的事情,我想这可能是造成这种情况的原因。
- 我发布了一个应用程序捆绑包,而不是APK
- 我添加了这些Proguard/收缩&build.gradle中的obfusion设置
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
debuggable false
}
}
我已经查看了Proguard构建输出文件usage.txt,但我没有看到任何关于PatternNative被删除或任何可能导致此问题的内容。
您的问题可能是MyInputFilter.java:30
中的正则表达式混淆。尝试通过将以下行添加到proguard-rules.pro
文件中来防止类字段混淆:
-keepclassmembers class com.mymedia.android.tracker.custom.MyInputFilter {
*;
}
在我的例子中,我只是错误地将应用程序中的所有活动都设置为CCD_ 3与值CCD_。但我们应该至少设置其中一个,通常是要使用的主要活动:
android:exported=true
这将只允许操作系统启动应用程序的主要活动。
我希望它能有所帮助。