Flutter AndroidManifest.xml 错误:找不到包标识符或启动活动

Flutter AndroidManifest.xml Error: package identifier or launch activity not found

提问人:Faiz Ahmad Dae 提问时间:10/11/2023 最后编辑:Miftakhul ArzakFaiz Ahmad Dae 更新时间:10/20/2023 访问量:279

问:

我正在开发一个适用于 Android 的 Flutter 项目,遇到了与 AndroidManifest.xml 文件相关的错误。尝试运行我的项目时,我收到以下错误消息:

package identifier or launch activity not found. Please check /Users/[user]/AndroidStudioProjects/[project]/android/app/src/main/AndroidManifest.xml for errors.
No application found for TargetPlatform.android_arm64.
Is your project missing an android/app/src/main/AndroidManifest.xml? Consider running "flutter create ." to create one.

我已经检查了我的AndroidManifest .xml,它似乎是正确的。即使确保正确设置了包名称和目标平台,该错误仍然存在。

有人可以提供有关如何解决此问题的指导吗?是什么原因导致了此错误,我应该采取哪些步骤来排除故障并修复它?

AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.webjow.hidden_gallery"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="32"
        tools:ignore="ScopedStorage" />
    <uses-permission
        android:name="android.permission.READ_EXTERNAL_STORAGE"
        android:maxSdkVersion="32" />

    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

    <uses-permission android:name="android.permission.USE_BIOMETRIC" />
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

    <application
        android:name="androidx.multidex.MultiDexApplication"
        android:allowBackup="false"
        android:fullBackupContent="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:manageSpaceActivity=".MainActivity"
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true"
        tools:replace="android:label"
        tools:targetApi="34">

        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxx~xxxxxxxxxx"/>

        <activity
            android:name=".MainActivity"
            android:theme="@style/LaunchTheme" />

        <activity-alias
            android:name="OneLauncherAlias"
            android:enabled="true"
            android:exported="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:targetActivity=".MainActivity"
            android:theme="@style/LaunchTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>

        <activity-alias
            android:name="TwoLauncherAlias"
            android:enabled="false"
            android:exported="true"
            android:icon="@mipmap/calculator"
            android:label="@string/app_name_fake"
            android:targetActivity=".MainActivity"
            android:theme="@style/LaunchTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity-alias>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

其他信息:

Flutter 版本: 和 Dart 版本:3.13.53.1.2

Android Flutter Dart 错误处理 清单

评论

0赞 Sanwal Singh 10/11/2023
代替这个 -> android:name=“androidx.multidex.MultiDexApplication” 使用 - android:name=“${applicationName}”
0赞 Faiz Ahmad Dae 10/11/2023
@SanwalSingh我的应用需要android:name=“androidx.multidex.MultiDexApplication”。
0赞 Sanwal Singh 10/12/2023
为什么需要这个名字?
0赞 Victor Eronmosele 10/14/2023
@FaizAhmadDae你能提供一个简单的可重现版本来显示这个错误吗?
0赞 Virginus Alajekwu 10/20/2023
你能试着看看错误是否会持续存在吗android:name=".MainActivity"

答:

1赞 Narendra Bhatt 10/14/2023 #1

试试这个。

  1. 从两者中删除并将其添加到 .intent-filteractivity-aliasintent-filteractivity

  2. 也设置在活动中。android:exported="true"

    <activity
        android:name=".MainActivity"
        android:theme="@style/LaunchTheme" 
        android:exported="true"
        >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    <activity-alias
        android:name="OneLauncherAlias"
        android:enabled="true"
        android:exported="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:targetActivity=".MainActivity"
        android:theme="@style/LaunchTheme" />
    
    <activity-alias
        android:name="TwoLauncherAlias"
        android:enabled="false"
        android:exported="true"
        android:icon="@mipmap/calculator"
        android:label="@string/app_name_fake"
        android:targetActivity=".MainActivity"
        android:theme="@style/LaunchTheme" />
    

评论

0赞 Faiz Ahmad Dae 10/15/2023
这工作正常,但我的功能不适用于您的代码。例如更改应用程序图标和应用程序名称。
0赞 Narendra Bhatt 10/16/2023
您遵循什么程序来更改应用程序图标和应用程序名称?
1赞 Laxmi kant 10/17/2023 #2

重复元素: 您定义了两个元素。这通常不是必需的。您应该只有一个来定义启动器活动。<activity-alias><activity-alias><activity-alias>

根据您的要求删除 OR。启动器别名应定义应用的入口点。"OneLauncherAlias""TwoLauncherAlias"<activity-alias>

在那之后,它看起来像

           <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.webjow.hidden_gallery"
            xmlns:tools="http://schemas.android.com/tools">
            
            <!-- Your permissions, application, and meta-data here -->

            <application
                android:name="androidx.multidex.MultiDexApplication"
                android:allowBackup="false"
                android:fullBackupContent="false"
                android:icon="@mipmap/ic_launcher"
                android:label="@string/app_name"
                android:manageSpaceActivity=".MainActivity"
                android:requestLegacyExternalStorage="true"
                android:usesCleartextTraffic="true"
                tools:replace="android:label"
                tools:targetApi="34">
            
                <!-- Your activities and other components here -->

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


      
1赞 Abdul Ahad 10/19/2023 #3

您似乎添加了多个针对您的 Main Activity 标签的别名。

  1. 它可以通过删除两个别名来简单地解决。

  2. 在主活动代码中添加 intent 过滤器代码,并添加 exported true 标志。这将解决问题。

    <activity
            android:name=".MainActivity"
            android:theme="@style/LaunchTheme">
       <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter>
    </activity>
    

评论

0赞 Faiz Ahmad Dae 10/20/2023
我需要别名兄弟。