You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter安卓清单已加定位权限仍提示缺失问题排查

问题解决方案

1. 已添加定位权限仍提示未定义问题

产生原因:

  • 代码中使用了LocationAccuracy.best高精度定位,仅配置ACCESS_COARSE_LOCATION权限不满足要求
  • 未先请求运行时权限就直接调用定位接口
  • 可能修改了错误目录下的AndroidManifest.xml

解决步骤:

  • 确认修改的是android/app/src/main/目录下的AndroidManifest.xml,不要修改debug、profile目录下的配置文件
  • 补充定位权限,AndroidManifest.xml的manifest节点下添加如下配置:
<!-- 基础定位权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Android 12及以上额外适配 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="32" />
  • 调整定位代码,先请求运行时权限再调用定位接口,修正后代码如下:
onPressed: () async {
  LocationPermission permission = await Geolocator.requestPermission();
  if (permission == LocationPermission.denied || permission == LocationPermission.deniedForever) {
    print("定位权限被用户拒绝");
    return;
  }
  Geolocator
      .getCurrentPosition(desiredAccuracy: LocationAccuracy.best, forceAndroidLocationManager: true)
      .then((Position position) {
    setState(() {
      _currentPosition = position;
      print ( "LAT: ${_currentPosition.latitude}, LNG: ${_currentPosition.longitude}");
    });
  }).catchError((e) {
    print(e);
  });
},

2. Attribute android:icon is not allowed here 报错解决

产生原因:

AGP(Android Gradle Plugin)7.0及以上版本不再支持在AndroidManifest.xml的根节点配置package属性,需要迁移到build.gradle中配置namespace

解决步骤:

  • 删除AndroidManifest.xml根节点的package="com.example.agent"配置
  • 打开android/app/build.gradle,在android代码块中添加如下配置:
android {
    namespace "com.example.agent"
    // 原有其他配置保持不变
    compileSdkVersion 33
    ...
}
  • 检查android/app/src/main/res/mipmap各密度目录下是否存在ic_launcher对应资源文件,不存在可替换为存在的资源名,或用flutter_launcher_icons工具重新生成启动图标。

3. Unresolved class 'MainActivity' 报错解决

解决步骤:

  • 先完成上述namespace配置迁移
  • 检查MainActivity文件路径是否正确:
    若使用Kotlin,路径应为android/app/src/main/kotlin/com/example/agent/MainActivity.kt
    若使用Java,路径应为android/app/src/main/java/com/example/agent/MainActivity.java
  • 打开MainActivity文件,确认第一行包名配置为package com.example.agent,类名确实为MainActivity且继承FlutterActivity
  • 完成所有修改后执行如下命令清理缓存重新构建:
flutter clean
flutter pub get
cd android
# Windows系统执行 gradlew clean
./gradlew clean

重新运行项目即可解决所有报错。

内容的提问来源于stack exchange,提问作者Asmoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:21:00