Embed ProGuard rules in the jar

This commit is contained in:
Gabriel Ittner
2018-08-19 10:32:00 +02:00
parent 83f60d6bd7
commit 4bbc5b2ff8
3 changed files with 26 additions and 25 deletions

View File

@@ -578,34 +578,14 @@ implementation 'com.squareup.moshi:moshi:1.6.0'
Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap]. Snapshots of the development version are available in [Sonatype's `snapshots` repository][snap].
ProGuard R8 / ProGuard
-------- --------
If you are using ProGuard you might need to add the following options: If you are using R8 or ProGuard add the options from [this file](https://github.com/square/moshi/blob/master/moshi/src/main/resources/META-INF/proguard/moshi.pro).
```
-dontwarn okio.**
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
```
Additional rules are needed if you are using Kotlin:
*...If you are using the reflect API (i.e. `KotlinJsonAdapterFactory`):* The `moshi-kotlin` artifact additionally requires the options from [this file](https://github.com/square/moshi/blob/master/kotlin/reflect/src/main/resources/META-INF/proguard/moshi-kotlin.pro)
```
-keepclassmembers class kotlin.Metadata { You might also need rules for Okio which is a dependency of this library.
public <methods>;
}
```
*...If you are using the codegen API (i.e. `JsonClass(generateAdapter = true)`):*
```
-keep class **JsonAdapter {
<init>(...);
<fields>;
}
-keepnames @com.squareup.moshi.JsonClass class *
```
License License
-------- --------

View File

@@ -0,0 +1,3 @@
-keepclassmembers class kotlin.Metadata {
public <methods>;
}

View File

@@ -0,0 +1,18 @@
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
# The name of @JsonClass types is used to look up the generated adapter
-keepnames @com.squareup.moshi.JsonClass class *
# Retain generated JsonAdapters if annotated type is retained
-if @com.squareup.moshi.JsonClass class *
-keep class <1>JsonAdapter {
<init>(...);
<fields>;
}