gson-comments/examples/android-proguard-example
Marcono1234 43396e45fd
Add ProGuard / R8 integration tests & add default ProGuard rules (#2397)
* Add code shrinking tools integration test

* Keep no-args constructor of classes usable with JsonAdapter

* Add library ProGuard rules for Gson

They are automatically applied for all users of Gson, see
https://developer.android.com/build/shrink-code#configuration-files

* Skip japicmp-maven-plugin for shrinker-test

* Add more tests for JsonAdapter, add tests for generic classes

* Extend default constructor test

* Add Troubleshooting Guide entry for TypeToken
2023-05-28 12:24:05 -07:00
..
res initial cut at an example Android application that uses Proguard with Gson 2011-07-22 20:55:37 +00:00
src/com/google/gson/examples/android Use diamond operator when creating generic instances (#2104) 2022-04-17 15:27:21 -07:00
AndroidManifest.xml Removed the executable flag from clearly text files 2018-04-26 10:23:15 +03:00
README.md Add ProGuard / R8 integration tests & add default ProGuard rules (#2397) 2023-05-28 12:24:05 -07:00
default.properties initial cut at an example Android application that uses Proguard with Gson 2011-07-22 20:55:37 +00:00
proguard.cfg Retain generic signature of TypeToken with R8 version 3.0 and higher 2021-08-05 09:18:32 +02:00

README.md

android-proguard-example

Example Android project showing how to properly configure ProGuard. ProGuard is a tool for 'shrinking' and obfuscating compiled classes. It can rename methods and fields, or remove them if they appear to be unused. This can cause issues for Gson which uses Java reflection to access the fields of a class. It is necessary to configure ProGuard to make sure that Gson works correctly.

Also have a look at the ProGuard manual and the ProGuard Gson examples for more details on how ProGuard can be configured.

The R8 code shrinker uses the same rule format as ProGuard, but there are differences between these two tools. Have a look at R8's Compatibility FAQ, and especially at the Gson section.

Note that newer Gson versions apply some of the rules shown in proguard.cfg automatically by default, see the file gson/META-INF/proguard/gson.pro for the Gson version you are using.