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

hsgswve4  于 2023-10-22  发布在  Flutter
关注(0)|答案(4)|浏览(485)

我正在为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版本:3.13.5和Dart版本:3.1.2

6tdlim6h

6tdlim6h1#

试试这个.
1.从两个activity-alias中删除intent-filter,并将intent-filter添加到activity中。
1.在Activity中设置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" />
baubqpgj

baubqpgj2#

重复<activity-alias>元素:你已经定义了两个<activity-alias>元素。这通常是不需要的。您应该只有一个<activity-alias>来定义启动器Activity。
根据您的要求删除"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>
mcdcgff0

mcdcgff03#

问题似乎是您没有在AndroidManifest.xml中定义适当的启动活动。
有几件事可以尝试:
1.删除<activity-alias>元素,直接在MainActivity上设置Intent过滤器:

<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>

1.确保顶部的包名称与Flutter项目名称和文件夹结构相匹配。
1.对项目进行全面清理和重建。
1.从模拟器/设备中删除应用程序并重新安装。
主要的问题是:

  • 未直接定义发射活动
  • 包名称和项目结构之间可能不匹配

直接在MainActivity上定义Intent过滤器应该可以解决这个问题。

pgccezyw

pgccezyw4#

您似乎添加了多个针对您的Main Activity标记的别名。
1.它可以简单地通过删除两个别名来解决。
1.在main activity标签中添加intent filter标签,并添加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>

相关问题