Flutter 应用程序在应用程序开始启动时显示灰屏

Flutter apps displaying grey screen on apps start launch

我不知道这是正常现象还是错误问题,我注意到一些应用程序(包括我自己的) 在制作发布版本甚至调试版本后,启动时它会显示奇怪的青铜色背景颜色几毫秒下面的屏幕截图)这是正常的构建还是有任何解决方案? 或者这可能与 AndroidManifest

有关

编辑: 我会 post 我的构建 gradleAndroidManifest 以防有帮助

 compileOptions {
    sourceCompatibility 1.8
    targetCompatibility 1.8
}

 buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        zipAlignEnabled true
        proguardFiles getDefaultProguardFile(
                'proguard-android-optimize.txt'),
                'proguard-rules.pro'
        signingConfig signingConfigs.release
    }

AndroidManifest :

<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android. permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>

<queries>
    <intent>
        <action android:name="android.media.action.IMAGE_CAPTURE" />
    </intent>
</queries>

<application
    android:name="io.flutter.app.FlutterApplication"
    android:label="myapp"
    android:icon="@mipmap/ic_launcher"
    android:usesCleartextTraffic="true"
    android:requestLegacyExternalStorage="true"
    >

    <receiver android:name="com.app.myapp">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
        </intent-filter>
    </receiver>

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">

        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data
                android:scheme="https"
                android:host="YOUR_SUBDOMAIN.page.link" />
        </intent-filter>

        <intent-filter>
            <action android:name="FLUTTER_NOTIFICATION_CLICK" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

    </activity>

    <meta-data
        android:name="flutterEmbedding"
        android:value="2" />

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

    <meta-data android:name="com.google.android.geo.API_KEY"
        android:value=""/>

    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value=""/>

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>

    <service            android:name="com.app.fayda.localnotifications.services.LocalNotificationsService"
        android:exported="false" />

    <meta-data            android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

这是 Tinder 应用程序的另一个示例,它在 Splash screen 出现

之前也有同样的问题

经过一些调查,我会给出一些可能的解决方案:

为了检查 logcat 问题,我不得不更改为发布版本构建变体

(1)。 Flutter clean 和 flutter pub get

(2)。在另一个 window

中打开项目的 Android 模块

(3)。等待所有过程,然后是第一个清理项目和重建项目

(4)。等待重建过程完成,现在首先在左下角更改您的构建变体,您可以看到选项卡“Build variant”打开它,然后在“app”文件夹的前面,您可以在“Active Build Variant”列中看到这样的“debug”请改成“release”

(5)。之后重复步骤 3

(6) 和 运行 项目来自 Android 模块 如果您遇到灰屏问题,那么您可以知道 Logcat 部分中的确切错误是什么,并确保您的密钥库文件和密钥库详细信息适合发布

这是另一个潜在的解决方案,显然是这个文件 launch_background.xml 导致每次您启动应用程序时它都会首先启动它,并且据我所知您无法绕过它可以更改颜色如您所见或放置图像但不幸的是没有解决方法