diff --git a/scripts/enable-android-google-services.patch b/scripts/enable-android-google-services.patch new file mode 100644 index 000000000..fb806d14e --- /dev/null +++ b/scripts/enable-android-google-services.patch @@ -0,0 +1,144 @@ +diff --git a/android/app/build.gradle b/android/app/build.gradle +index bb8e015cd..3ff4a7579 100644 +--- a/android/app/build.gradle ++++ b/android/app/build.gradle +@@ -2,7 +2,7 @@ plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +- //id "com.google.gms.google-services" ++ id "com.google.gms.google-services" + } + + def localProperties = new Properties() +@@ -97,11 +97,12 @@ flutter { + } + + dependencies { +- //implementation 'com.google.firebase:firebase-messaging:19.0.1' // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 ++ implementation 'com.google.firebase:firebase-messaging:19.0.1' ++ // Workaround for https://github.com/microg/android_packages_apps_GmsCore/issues/313#issuecomment-617651698 + implementation 'androidx.multidex:multidex:2.0.1' + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") + } + + configurations.all { +- exclude group: 'com.google.android.gms' ++ //exclude group: 'com.google.android.gms' + } +\ No newline at end of file +diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro +index d0e0fbc9..0a546da0 100644 +--- a/android/app/proguard-rules.pro ++++ b/android/app/proguard-rules.pro +@@ -1 +1,42 @@ +--keep class net.sqlcipher.** { *; } +\ No newline at end of file ++-optimizationpasses 5 ++## Flutter wrapper ++-keep class net.sqlcipher.** { *; } ++-keep class io.flutter.app.** { *; } ++-keep class io.flutter.plugin.** { *; } ++-keep class io.flutter.util.** { *; } ++-keep class io.flutter.view.** { *; } ++-keep class io.flutter.** { *; } ++-keep class io.flutter.plugins.** { *; } ++-dontwarn io.flutter.embedding.** ++ ++##---------------Begin: proguard configuration for Gson (Needed for flutter_local_notifications) ---------- ++# Gson uses generic type information stored in a class file when working with fields. Proguard ++# removes such information by default, so configure it to keep all of it. ++-keepattributes Signature ++ ++# For using GSON @Expose annotation ++-keepattributes *Annotation* ++ ++# Gson specific classes ++-dontwarn sun.misc.** ++ ++# Application classes that will be serialized/deserialized over Gson ++-keep class com.google.gson.examples.android.model.** { ; } ++ ++# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory, ++# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) ++-keep class * extends com.google.gson.TypeAdapter ++-keep class * implements com.google.gson.TypeAdapterFactory ++-keep class * implements com.google.gson.JsonSerializer ++-keep class * implements com.google.gson.JsonDeserializer ++ ++# Prevent R8 from leaving Data object members always null ++-keepclassmembers,allowobfuscation class * { ++ @com.google.gson.annotations.SerializedName ; ++} ++ ++# Retain generic signatures of TypeToken and its subclasses with R8 version 3.0 and higher. ++-keep,allowobfuscation,allowshrinking class com.google.gson.reflect.TypeToken ++-keep,allowobfuscation,allowshrinking class * extends com.google.gson.reflect.TypeToken ++ ++##---------------End: proguard configuration for Gson (Needed for flutter_local_notifications) ---------- +\ No newline at end of file +diff --git a/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt b/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt +index d9930f55..510e9845 100644 +--- a/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt ++++ b/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt +@@ -1,4 +1,4 @@ +-/*package chat.fluffy.fluffychat ++package chat.fluffy.fluffychat + + import com.famedly.fcm_shared_isolate.FcmSharedIsolateService + +@@ -33,4 +33,3 @@ class FcmPushService : FcmSharedIsolateService() { + } + } + } +-*/ +\ No newline at end of file +diff --git a/android/settings.gradle b/android/settings.gradle +index b2fd960a..fdb01a4d 100644 +--- a/android/settings.gradle ++++ b/android/settings.gradle +@@ -20,7 +20,7 @@ plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.7.3" apply false + id "org.jetbrains.kotlin.android" version "2.1.10" apply false +- // id "com.google.gms.google-services" version "4.3.8" apply false ++ id "com.google.gms.google-services" version "4.3.8" apply false + } + + include ":app" +\ No newline at end of file +diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart +index 1ba2659a..989f458e 100644 +--- a/lib/utils/background_push.dart ++++ b/lib/utils/background_push.dart +@@ -39,7 +39,7 @@ import '../config/setting_keys.dart'; + import '../widgets/matrix.dart'; + import 'platform_infos.dart'; + +-//import 'package:fcm_shared_isolate/fcm_shared_isolate.dart'; ++import 'package:fcm_shared_isolate/fcm_shared_isolate.dart'; + + class NoTokenException implements Exception { + String get cause => 'Cannot get firebase token'; +@@ -64,7 +64,7 @@ class BackgroundPush { + + final pendingTests = >{}; + +- final dynamic firebase = null; //FcmSharedIsolate(); ++ final dynamic firebase = FcmSharedIsolate(); + + DateTime? lastReceivedPush; + +diff --git a/pubspec.yaml b/pubspec.yaml +index fb3e3ca4..039b2ccc 100644 +--- a/pubspec.yaml ++++ b/pubspec.yaml +@@ -25,7 +25,7 @@ dependencies: + dynamic_color: ^1.7.0 + emoji_picker_flutter: ^4.3.0 + emojis: ^0.9.9 +- #fcm_shared_isolate: ^0.2.0 ++ fcm_shared_isolate: ^0.2.0 + file_picker: ^8.1.2 + file_selector: ^1.0.3 + flutter: