user1080247
user1080247

Reputation: 1166

flutter android app freezes on the splash screen in release mode

I have a problem using the storage to persist the user login data .

the scenario like that : after login , I clear the app and try to reopen it again , sometimes it open and sometimes it's freezes on the splash screen. this only happen in the release mode .

I tried to remove every package until I found the problem with using the storage after login. so I if I not login nothing freezes .

I used get_storage and shared_preferences and secured_storage packages but nothing changed . flutter 2.10.2.

tested on real device

also this the the used packages

module:
  androidX: true # Add this line.

environment:
  sdk: ">=2.11.0 <3.0.0"

dependencies:
  dio: ^4.0.0
  get: ^4.1.4
  get_storage:
  flutter:
    sdk: flutter


dev_dependencies:
  flutter_launcher_icons: ^0.9.2

flutter_icons:
  android: true
  ios: false
  image_path: "assets/icons/launcher_icon.png"
  flutter_test:
    sdk: flutter

name: delivery
description: manager App
version: 1.6.3
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

finally I decided to share the verbose hope someone can help

https://github.com/flutter/flutter/issues/98862

Upvotes: 9

Views: 14155

Answers (9)

Chetankumar Akarte
Chetankumar Akarte

Reputation: 114

I am facing the same problem & my app was rejected on play store reason was Issue found: Violation of Broken Functionality policy and Your app contains content that isn’t compliant with the Broken Functionality policy.

App installs, but doesn't load

I figure out several way. If you are using flutter_native_splash plugin dependency If you do not need to use the preserve() and remove() methods, you can place the flutter_native_splash dependency in the dev_dependencies section of pubspec.yaml.

You have to modified android/app/build.gradle and add multiDexEnabled true

    defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId = "com.your.appid"
    // You can update the following values to match your application needs.
    // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
    minSdk = 21
    targetSdk = 35
    versionCode = flutterVersionCode.toInteger()
    versionName = flutterVersionName
    multiDexEnabled true
}

This help me to launch my app quickly and help me to resolve this issue!

Upvotes: 1

White Tomato
White Tomato

Reputation: 11

oddly enough, the note of the phone connection cable helped me. I've been trying to figure out what's going on for almost a month, but to no avail. Although the cable worked as it should, transmitted information from the device and charged, it was the build of the application that was not installed with it. Try simply changing the plug-in cable to the device.

Upvotes: 0

Mohammad Tanvir Parvez
Mohammad Tanvir Parvez

Reputation: 124

I had the same problem in our production app few days back. I released an update (where just a couple of tables were updated in the local app database) with Flutter 2.10.2 and many users started getting frozen launch screen.

After spending days trying to solve it, I finally downgraded the Flutter to 2.8 and released an update and the issue was gone.

Upvotes: 5

Giuseppe Cianci
Giuseppe Cianci

Reputation: 557

I had a similar bug:

  • By default on Android, android:allowBackup is set to true which means that your app's data is automatically backed up to your Google Drive
  • The problem is when something in your data structure changes but you have an old backup with an old and incompatible data structure. When reinstalling a new version of the app which is incompatible with the old data structure which was backed up, it will freeze on the native splash screen.

I solved this by adding android:allowBackup="false" to android/app/src/main/AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    <application
        ...
        android:allowBackup="false"
        ...
    </application>
</manifest>

Upvotes: 15

BestOFBest
BestOFBest

Reputation: 55

I recommend you to install the flutter sdk again from scratch and try it.

Upvotes: 0

jon
jon

Reputation: 3610

Since the other answers haven't given any luck, I would suggest that you start by disabling everything in your app, and gradually enable portions of the app until you reproduce the problem. For example, start by replacing your MyApp() in your main() with a blank shell of an app:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Colors.transparent, // transparent status bar
  ));
  await initServices();
  runApp(MaterialApp(
    home: Container(color: Colors.blue),
  ));
}

This will tell you if the problem is in your initialization or the rest of your app. If the blue screen loads, it tells you that the initialization is fine. Keep dividing your app like this until you find the part this is causing the app to hang.

Upvotes: 0

jon
jon

Reputation: 3610

You could install sentry_flutter in your application to capture exceptions in your release app.

Also, try moving flutter_native_splash: ^2.0.4 from dev_dependencies to dependencies.

Upvotes: 2

Vishal Agrawal
Vishal Agrawal

Reputation: 354

I think there should be 2 things --

first make sure you added the Internet permission and other required permissions in AndroidManifest.xml file

Second if you already defined all the required permissions then try this--

in your app/build.gradle file add these 3 lines

        minifyEnabled false
        useProguard false
        shrinkResources false

in

buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
            minifyEnabled false
            useProguard false
            shrinkResources false
        }
    }

then clean your project and try again I hope this will work and if you still faced that problem check the documentation again of flutter_native_splash package you used, also watch the video of Johannes Milke's tutorial which is already linked in the documentaion.

Thankyou.

Upvotes: 0

Ujjawal Maurya
Ujjawal Maurya

Reputation: 616

Take you real device and connect it to you pc via cable and install release version of you app

  1. Go-to terminal and run flutter logs to see what's going on

  2. In some cases, may be permissions are reason. You need to specify them (don't relax because of default permissions set)

Upvotes: 1

Related Questions