React Native 画面が 1 つある既存の Android アプリでこのオプションを使用する-dontobfuscate
と、リリース ビルドが正常に機能します。
( https://github.com/facebook/react-native/blob/master/local-cli/generator-android/templates/src/app/proguard-rulesから pro-guard の反応ネイティブ構成も設定する必要がありました。プロ)
ただし、既存のアプリを難読化し、反応ネイティブの難読化のみを無視したい ( 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
、ビルド後に、反応ネイティブ画面の最初の起動時に例外をスローします。
最初の構成試行:
-keep class com.facebook.react.** { public protected private *; }
2 回目の設定試行:
-dontwarn android.support.v7.** -keep class android.support.v7.** { *; } -keep interface android.support.v7.** { *; }
3 番目の構成試行:
-keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; }
4番目の構成を試してください:
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)
反応ネイティブで動作するリリース apk (既存の Android アプリ) をお持ちの方は、プロガードの構成を共有していただけますか?