diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle index f44f7fd7..60485c49 100644 --- a/play-services-core/build.gradle +++ b/play-services-core/build.gradle @@ -62,6 +62,9 @@ android { buildConfigField "String", "BASE_PACKAGE_NAME", "\"$basePackageName\"" + multiDexEnabled true + multiDexKeepProguard file('multidex-keep.pro') + ndk { abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" } diff --git a/play-services-core/multidex-keep.pro b/play-services-core/multidex-keep.pro new file mode 100644 index 00000000..0cd8699e --- /dev/null +++ b/play-services-core/multidex-keep.pro @@ -0,0 +1,9 @@ +# Make sure maps is in the primary dex file +-keep class com.google.android.gms.maps.** { *; } +-keep class org.microg.gms.maps.** { *; } +-keep class com.mapbox.** { *; } +-keep class org.oscim.** { *; } + +# Keep Conscrypt in the primary dex file otherwise it will error out on legacy Android versions +-keep class com.google.android.gms.common.security.ProviderInstallerImpl { *; } +-keep class com.google.android.gms.org.conscrypt.** { *; } diff --git a/play-services-core/proguard-rules.pro b/play-services-core/proguard-rules.pro index 9b421ddd..923a7661 100644 --- a/play-services-core/proguard-rules.pro +++ b/play-services-core/proguard-rules.pro @@ -21,10 +21,13 @@ # Keep dynamically loaded GMS classes -keep public class com.google.android.gms.common.security.ProviderInstallerImpl { public *; } +-keep public class com.google.android.gms.dynamic.IObjectWrapper { public *; } +-keep public class com.google.android.gms.dynamite.descriptors.** { public *; } # Keep AutoSafeParcelables -keep public class * extends org.microg.safeparcel.AutoSafeParcelable { @org.microg.safeparcel.SafeParceled *; + (...); } # Keep form data diff --git a/proguard.flags b/proguard.flags index fba8c5e2..7e287ce2 100644 --- a/proguard.flags +++ b/proguard.flags @@ -11,16 +11,24 @@ -dontwarn com.caverock.androidsvg.** -dontwarn org.slf4j.** -dontwarn org.codehaus.jackson.** +-dontwarn com.android.location.provider.** +-dontwarn java.lang.instrument.ClassFileTransformer +-dontwarn sun.misc.SignalHandler +-dontwarn com.android.org.conscrypt.SSLParametersImpl +-dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl # Disable ProGuard Notes, they won't help here -dontnote # Keep dynamically loaded GMS classes -keep public class com.google.android.gms.common.security.ProviderInstallerImpl { public *; } +-keep public class com.google.android.gms.dynamic.IObjectWrapper { public *; } +-keep public class com.google.android.gms.dynamite.descriptors.** { public *; } # Keep AutoSafeParcelables -keep public class * extends org.microg.safeparcel.AutoSafeParcelable { @org.microg.safeparcel.SafeParceled *; + (...); } # Keep form data @@ -29,7 +37,12 @@ } # Keep our stuff --keep class org.microg.** { *; } +-keep class org.microg** { *; } +-keep class com.google.android.gms** { *; } +-keep class com.mgoogle** { *; } +-keepdirectories org/microg** +-keepdirectories com/google/android/gms** +-keepdirectories com/mgoogle** # Keep asInterface method cause it's accessed from SafeParcel -keepattributes InnerClasses