当我-dontobfuscate
在现有的带有单个 React Native 屏幕的 android 应用程序中使用该选项时,发布构建工作正常。
但是,我想混淆我现有的应用程序并仅忽略 react-native 混淆(因为它不受支持:https ://github.com/facebook/react-native/issues/7530 )
注释掉后-dontobfuscate
,我得到了这些错误:
Warning: com.facebook.react.views.recyclerview.NotAnimatedItemAnimator: can't find referenced method 'void dispatchRemoveStarting(android.support.v7.widget.RecyclerView$ViewHolder)' in program class com.facebook.react.views.recyclerview.NotAnimatedItemAnimator
Warning: com.facebook.react.views.recyclerview.NotAnimatedItemAnimator: can't find referenced method 'void dispatchRemoveFinished(android.support.v7.widget.RecyclerView$ViewHolder)' in program class com.facebook.react.views.recyclerview.NotAnimatedItemAnimator
...
我尝试了以下配置,但没有一个工作。它们要么在 proguard 阶段抛出警告,assembleRelease
要么一旦构建,在首次启动 react native 屏幕时抛出异常。
第一次配置尝试:
-keep class com.facebook.react.** { public protected private *; }
第二次配置尝试:
-dontwarn android.support.v7.** -keep class android.support.v7.** { *; } -keep interface android.support.v7.** { *; }
第三次配置尝试:
-keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; }
第四个配置尝试:
support-v7 -dontwarn android.support.v7.** -keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; } -keep class android.support.v7.** { *; }
例外情况如下:
Caused by: java.lang.IllegalAccessError: Method 'void android.support.v4.net.ConnectivityManagerCompat.<init>()' is inaccessible to class 'com.facebook.react.modules.netinfo.NetInfoModule' (declaration of 'com.facebook.react.modules.netinfo.NetInfoModule' appears in /data/app/com.sampleapp-1/base.apk)
at com.facebook.react.modules.netinfo.NetInfoModule.<init>(NetInfoModule.java:55)
任何使用 react-native 的工作版本 apk(现有的 android 应用程序)的人,你能分享你的 proguard 配置吗?