先写最终解决办法

-keep class com.test.DocDetect {    *;}

com.test.DocDetct 换成你的JNI类

异常

java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad

  • APK的release包崩溃,debug包正常
  • JNI内反射加载类找不到导致
  • 反编译APK(或者看mapping文件),发现
    DetectResult类,被rename 成 a.b.c,包名都变了

方法

添加JNI相关类的防混淆

解决尝试

1. keep class

防止类被移走、重命名

-keep class com.test.DetectResult-keep class com.test.DocDetect
  • private的属性 被混淆
  • 继承自接口的方法被混淆 (接口没防混淆)

2. keepclassmembers

只防止类的成员 被移走、重命名

-keepclassmembers class com.test.DetectResult {    *;}-keepclassmembers class com.test.DocDetect {    *;}
  • com.sogou.image.document.DetectResult 被混淆

3. 最终解决

#Doc Detect SDK-keep class com.test.DetectResult {    *;}-keep class com.test.DocDetect {    *;}

文档总结

# Add *one* of the following rules to your Proguard configuration file.# Alternatively, you can annotate classes and class members with @androidx.annotation.Keep# keep the class and specified members from being removed or renamed-keep class com.sogou.image.document.DocDetect { *; }# keep the specified class members from being removed or renamed # only if the class is preserved-keepclassmembers class com.sogou.image.document.DocDetect { *; }# keep the class and specified members from being renamed only-keepnames class com.sogou.image.document.DocDetect { *; }# keep the specified class members from being renamed only-keepclassmembernames class com.sogou.image.document.DocDetect { *; }

更多相关文章

  1. Android(安卓)开发工具(以后持续更新)
  2. Android如何获取屏幕的分辨
  3. Android里handler线程间的通信详解
  4. 源码分析Android(安卓)AMS WMS PMS
  5. Android群英传知识点回顾——第五章:Android(安卓)Scroll分析
  6. Android屏蔽Home键,适配所有版本
  7. 深入android数据库操作
  8. android 常用Bitmap处理方法收集:普通裁剪,缩放,圆形裁剪
  9. Android(安卓)processor的一次尝试

随机推荐

  1. Android(安卓)监听home键(android:launchM
  2. 《Android开发从零开始》——13.Table La
  3. android:launcherMode
  4. Android简单自定义圆形和水平ProgressBar
  5. Android(安卓)SDK系统要求
  6. Android四种Activity的加载模式
  7. Android(安卓)网络通信——HttpURLConnec
  8. Android开机广播和关机广播
  9. 解决 Android(安卓)模拟器 无法上网问题
  10. 在Windows7下构建Android的开发环境