diff --git a/android/app/build.gradle b/android/app/build.gradle index 001fbd72..339b35af 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { applicationId "chat.fluffy.fluffychat" - minSdkVersion 16 + minSdkVersion 19 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -68,6 +68,10 @@ android { } release { signingConfig signingConfigs.release + minifyEnabled false + shrinkResources false + + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } @@ -78,8 +82,11 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - //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 + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' implementation 'androidx.multidex:multidex:2.0.1' } -//apply plugin: 'com.google.gms.google-services' +apply plugin: 'com.google.gms.google-services' diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 00000000..40570865 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,41 @@ +-optimizationpasses 5 +## Flutter wrapper +-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/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt b/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt index 1afc4606..894d1571 100644 --- a/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt +++ b/android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt @@ -7,13 +7,11 @@ import android.content.Context import androidx.multidex.MultiDex class MainActivity : FlutterActivity() { - override fun attachBaseContext(base: Context) { super.attachBaseContext(base) MultiDex.install(this) } - override fun provideFlutterEngine(context: Context): FlutterEngine? { return provideEngine(this) } diff --git a/android/build.gradle b/android/build.gradle index 85aa8647..3b7e09e7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,7 +8,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - //classpath 'com.google.gms:google-services:4.3.8' + classpath 'com.google.gms:google-services:4.3.8' } } diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart index cd79b0ab..c2db0f1e 100644 --- a/lib/utils/background_push.dart +++ b/lib/utils/background_push.dart @@ -39,7 +39,7 @@ import '../config/setting_keys.dart'; import 'famedlysdk_store.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'; @@ -65,7 +65,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 6999d0b8..b2c9144f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,7 +26,7 @@ dependencies: emoji_picker_flutter: ^1.5.1 emoji_proposal: ^0.0.1 emojis: ^0.9.9 - #fcm_shared_isolate: ^0.1.0 + fcm_shared_isolate: ^0.1.0 file_picker_cross: ^4.6.0 flutter: sdk: flutter