Android が AGP8 をアップグレードし、R8 を有効にし、fastjson、log4j を使用すると、リリースできないことが判明し、生成後に正常に使用できないことがわかります

        Android Studioで開発されており、R8最適化が有効になっており(build.gradleのbuildtypes.releaseにminifyEnabled trueが追加されています)、正常にリリースでき、正常に実行できます。

        自動アップグレード後、AGP8 を使用したところ、Missing Class エラーが大量に発生したため、プロジェクトの proguard-rules.pro ファイルに -ignorewarnings を追加し (AGP7 以降、警告はエラーにアップグレードされ、続行できなくなりました)、最終的にリリース バージョンが生成されました。生成される apk のサイズは実際にはるかに小さくなり、半分以上に圧縮されます。ただし、これを使用すると、logback.SizeAndTimeBasedRollingPolicy の日付を最初に解析できず、例外が発生します。

        FileNamePattern xxxx には有効な DateToken が含まれていません

        ログを使わないと位置決めがかなり面倒です。Fastjson にも json 文字列の解析時に例外が発生し、関数は非常に異常です。

        ClassCastException: java.lang.Class を java.lang.reflect.ParameterizedType にキャストすることはできません

        2 つのライブラリのすべてのクラスを proguard-rules.pro に保持しても機能しません。要するに、アプリケーションは死んでいるのです。

        以前に R8 も有効になっていたことを思い出させると、最適化されたリリースは正常であるため、R8 の一部のモードが有効になり、過剰な最適化が発生する可能性があると推定されます。Android のドキュメントを確認したところ、AGP8 ではデフォルトで R8.fullmode が有効になっていることがわかりました。ドキュメントによると、プロジェクトの gradle.properties に android.enableR8.fullMode=false を追加し、fullmode を無効にすると、問題がないことがわかります。apk は 1M 近く増加しましたが、これはまったく許容できますが、それでも以前のリリースより半分近く小さくなっています。fullMode が有効になっていない場合でも、AGP8 が実際に大幅な改善を行っていることがわかります。

おすすめ

転載: blog.csdn.net/flyinmind/article/details/131012012