执行flutter build apk打包报错如何解决?更新build.gradle SDK版本后仍异常
Flutter 打包APK报错修复方案
问题说明
执行flutter build apk打包时首次报错和geolocator相关,按照建议修改build.gradle的SDK版本后出现新报错,报错截图如下:
现有配置信息
build.gradle配置
compileSdkVersion 31 defaultConfig { minSdkVersion 23 targetSdkVersion 29 }
gradle.properties配置
org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true
Dart SDK版本限制
sdk: ">=2.12.0 <3.0.0"
项目依赖列表
device_info_plus: ^2.1.0 google_fonts: ^2.1.0 google_maps_flutter: ^2.0.9 http: ^0.13.3 location: ^4.3.0 otp_text_field: ^1.1.1 shared_preferences: ^2.0.7 simple_shadow: ^0.2.0 dio: timer_button: ^2.0.0 rating_dialog: ^2.0.3 datetime_picker_formfield: select_form_field: flutter_polyline_points: ^1.0.0 flutter_swiper_plus: ^2.0.4 place_picker: ^0.9.19-nullsafety google_maps_place_picker: ^2.1.0-nullsafety.3 geocoding: ^2.0.0 image_picker: ^0.8.4 map_launcher: ^2.1.1 flutter_svg: url_launcher: ^6.0.13 get: ^4.3.8 simple_star_rating: ^0.0.3 webview_flutter: ^2.0.13
修复步骤
- 统一Android SDK版本
将targetSdkVersion升级到31,和compileSdkVersion保持一致,避免版本差异导致的兼容问题:
compileSdkVersion 31 defaultConfig { minSdkVersion 23 targetSdkVersion 31 }
- 解决定位类依赖冲突
项目中同时引入了多个定位、地图相关依赖,版本不匹配会引发构建错误,可在pubspec.yaml中添加依赖覆盖规则,统一geolocator版本:
dependency_overrides: geolocator: ^8.2.0
- 清理缓存重新构建
执行以下命令清除历史构建缓存后重新打包:
flutter clean flutter pub get flutter build apk
- 补全定位权限配置
确认android/app/src/main/AndroidManifest.xml中已添加定位相关权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
内容的提问来源于stack exchange,提问作者thecoder.co
相关产品推荐
相关产品推荐

