【发布时间】:2016-07-15 16:05:43
【问题描述】:
当我在现有的带有单个 React Native 屏幕的 Android 应用程序中使用 -dontobfuscate 选项时,发布构建工作正常。
(我还必须从 https://github.com/facebook/react-native/blob/master/local-cli/generator-android/templates/src/app/proguard-rules.pro 为 pro-guard 设置 react native 配置)
但是,我想混淆我现有的应用程序并仅忽略 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
...
我尝试了以下配置,但没有一个可以工作。他们要么在assembleRelease 的 proguard 阶段抛出警告,要么一旦构建,在首次启动 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 配置吗?
【问题讨论】:
-
android.support 库已经在 aar 文件中包含了 proguard 规则。添加库时,它们会自动添加到您的项目中。 tools.android.com/tech-docs/new-build-system/aar-format
-
谢谢@ajack。万一,我不包括 Android V7/V4 支持库的 proguard 条目,我得到不同的错误。我已经用我得到的错误更新了问题。
标签: react-native react-native-android android-proguard