
# ProGuard usage for DAVdroid:
#       shrinking        yes (main reason for using ProGuard)
#       optimization     yes
#       obfuscation      no (DAVdroid is open-source)
#       preverification  no

-dontobfuscate

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
-optimizationpasses 5
-allowaccessmodification
-dontpreverify

# Kotlin
-dontwarn kotlin.**

# Apache Commons
-dontwarn javax.script.**

# ez-vcard
-dontwarn ezvcard.io.json.**            # JSON serializer (for jCards) not used
-dontwarn freemarker.**                 # freemarker templating library (for creating hCards) not used
-dontwarn org.jsoup.**                  # jsoup library (for hCard parsing) not used
-keep class ezvcard.property.** { *; }  # keep all vCard properties (created at runtime)

# ical4j: ignore unused dynamic libraries
-dontwarn aQute.**
-dontwarn groovy.**                       # Groovy-based ContentBuilder not used
-dontwarn javax.cache.**                  # no JCache support in Android
-dontwarn net.fortuna.ical4j.model.**
-dontwarn org.codehaus.groovy.**
-dontwarn org.apache.log4j.**             # ignore warnings from log4j dependency
-keep class net.fortuna.ical4j.** { *; }  # keep all model classes (properties/factories, created at runtime)
-keep class org.threeten.bp.** { *; }     # keep ThreeTen (for time zone processing)

# okhttp
# JSR 305 annotations are for embedding nullability information.
-dontwarn javax.annotation.**
# A resource is loaded with a relative path so the package of this class must be preserved.
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
-dontwarn org.codehaus.mojo.animal_sniffer.*
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
-dontwarn okhttp3.internal.platform.ConscryptPlatform

# DAVdroid + libs
-keep,includedescriptorclasses class com.etesync.syncadapter.** { *; }    # all DAVdroid code and deps are required

# Android support
-keep,includedescriptorclasses class androidx.core.content.FileProvider { *; }    # all DAVdroid code and deps are required

# gson
-dontnote sun.misc.Unsafe  # not available on Android

# Spongcastle
-dontwarn org.spongycastle.jce.provider.X509LDAPCertStoreSpi
-dontwarn org.spongycastle.x509.util.LDAPStoreHelper
