Flutter编译报错:Android资源链接失败,<receiver>标签位置错误
解决Flutter编译时Android资源链接错误
编译报错信息:
* What went wrong: Execution failed for task ':app:processDebugResources'. > A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction > Android resource linking failed /Users/technology/Documents/UneleapLaunch/build/app/intermediates/packaged_manifests/debug/AndroidManifest.xml:66: error: unexpected element <receiver> found in <manifest><application><activity>. /Users/technology/Documents/UneleapLaunch/build/app/intermediates/packaged_manifests/debug/AndroidManifest.xml:73: error: unexpected element <receiver> found in <manifest><application><activity>.
问题原因
你将两个<receiver>元素嵌套在了<activity>标签内部,而AndroidManifest的结构规则明确要求<receiver>必须作为<application>的直接子元素存在,不能放在<activity>内部,这直接导致了资源链接失败。
修复后的AndroidManifest.xml代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.iiii.iiiii"> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.VIBRATE" /> <application android:label="iiiii" android:name="${applicationName}" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="true" 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"> <!-- Specifies an Android theme to apply to this Activity as soon as the Android process has started. This theme is visible to the user while the Flutter UI initializes. After that, this theme continues to determine the Window background behind the Flutter UI. --> <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> </activity> <!-- 移动到activity外部,作为application的直接子元素 --> <receiver android:exported="true" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver> <receiver android:exported="true" android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" /> <!-- 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>
说明
修改后,两个<receiver>元素被调整为<application>的直接子元素,完全符合AndroidManifest的结构规范,重新编译项目即可解决该错误。
内容的提问来源于stack exchange,提问作者Gbenga B Ayannuga
相关产品推荐
相关产品推荐

