From f4bebc4489a22198180342761cb2fd4d91ab5ecd Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Mon, 25 Dec 2023 21:00:42 +0900 Subject: [PATCH] Keep Conscrypt classes in the primary dex file https://github.com/microg/GmsCore/commit/640be73476473ce412da4058f4b2a2aaa8c20a25 --- play-services-core/build.gradle | 3 +++ play-services-core/multidex-keep.pro | 9 +++++++++ play-services-core/proguard-rules.pro | 3 +++ proguard.flags | 15 ++++++++++++++- 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 play-services-core/multidex-keep.pro 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