web-dev-qa-db-ja.com

Android / Java:ProGuardからR8への移行/移行?

ProGuardからR8に移行/移行する方法を知りたい。

GradleファイルからProguard関連の行を削除し、代わりにAndroid.enableR8 = true行を追加するだけですか?

ありがとう。

19
Regis_AG

ProguardはGuardSquareによって開発および保守され、R8はAndroidチームによって開発および保守されます。つまり、R8はProguardと互換性がありますが、2つの異なる製品です。

ここから見られるように https://www.guardsquare.com/en/blog/proguard-and-r8

ProGuardとR8の互換性

開発者にとって朗報は、R8がProGuardと下位互換性があることです。正常に機能するProGuard構成(Stackoverflowから折copied的にコピーされている場合)がある場合、R8に引き継ぐことができます。現在、まだいくつかのオプションを無視しています。特に、R8はオプション-whyareyoukeepingと-addconfigurationdebuggingを実装していません。これらは、前のブログで説明したように、動作する構成にすばやく到達するために不可欠であると考えています。

はい、Android.enableR8 = trueはR8機能を有効にします。

また、R8は現在(Android St​​udio 3.2.1の時点で)Android Archive Library(AAR)プロジェクトをサポートしていないことに注意してください。 APKファイルを作成する場合にのみ使用されます。


#1を編集

@ Archie から、Gradleプラグインバージョン3.4.0以上を使用している場合、R8は、デフォルトではonです。

参照: https://developer.Android.com/studio/releases#r8-default


#2を編集

ProguardからR8への移行については、以下の手順を実行できます。

1。 Proguardを無効にする

buildTypes { }構成を更新して、Proguardを無効にします。 releaseビルドタイプの場合:

   Android {
       ...
       buildTypes {
           release {
               useProguard false // <-- disable proguard
               minifyEnabled true // <-- enable minification
               proguardFiles getDefaultProguardFile('proguard-Android-optimize.txt'), 'proguard-rules.pro'
           }
       }
       ...
   }

Android St​​udio 3.4では、useProguardはデフォルトでfalseです。また、R8はデフォルトで有効になっています。

2。 (オプション)完全なR8構成レポートファイルの設定

以下の行をproguard-rules.proに追加して、プロジェクトをビルドするときにR8が適用するすべてのルールの完全なレポートを出力します。

// You can specify any path and filename.
-printconfiguration <your-path>/full-r8-config.txt

3。難読化されたアプリを生成します。

./gradlew assembleRelease

4。 (オプション)微調整とトラブルシューティング

<your-path>/full-r8-config.txtを見つけて、構成を微調整するか、トラブルシューティングを行います(ある場合)。

参照:

https://developer.Android.com/studio/build/shrink-code.html#configuration-files

26
shizhen