flutter 创建插件遇到的两个问题,一:右键Flutter菜单不可用,二:可用后,iOS工程打开没有pods目录。

本文介绍了解决在AndroidStudio中使用flutter创建插件时遇到的问题。通过命令行方式创建并调整配置,解决了项目无法正常打开及iOS项目缺少pods目录等问题。

今天研究flutter 插件

按照教程 通过android studio 创建 flutter 插件。

创建完成后,点击工程右键,弹出菜单中Flutter 项目为灰色,不可用。

升级flutter、AndroidStudio都未解决。

flutter :1.22.1

AndroidStudio:3.6.1

想尝试升级到AndroidStudio 4.x,考虑到未知风险,暂时未尝试。

后来,考虑通过flutter命令来尝试,成功解决:

flutter create --template=plugin  --org com.mytest.demo --platforms=android,ios myplugin

打开后恢复正常。右键打开android、ios工程正常,代码验证运行无误。

但如此生成的,默认是kotlin和swift,于是删除、修改命令:

flutter create --template=plugin  --org com.mytest.demo --platforms=android,ios -a java -i swift myplugin

再次生成项目,android正常变为java。

iOS打开,却遇到了第二个问题,没有生成pods目录。(没做过iOS,不了解pods...)

尝试修改配置并没有解决...

后来发现可以直接在 example/ios 目录下执行以下命令即可:

pod install

先记下来,以后再深入了解。

看来玩flutter的话,后面要好好补习一下iOS的开发知识了...

<think> 我们正在使用Flutter项目,并且集成了高德地图的Flutter插件`amap_flutter_map: ^3.0.0`。在运行代码时,终端出现了关于iOS Simulator部署目标版本匹配的警告,具体提示为:部署目标设置为9.0,但支持范围是12.0到18.5.99。这通常是因为插件中指定的最低iOS版本低于当前Xcode支持的最低版本(12.0)。 根据引用[3],我们知道在Flutter项目中,可以通过修改`ios/Podfile`文件来统设置所有Pod的部署目标版本。具体步骤是添加个`post_install`钩子,将每个Pod目标的部署目标设置为10.0(但根据警告,我们需要设置为至少12.0)。 因此,解决这个问题的办法是修改`ios/Podfile`文件,在最后添加个`post_install`脚本,将每个Pod的部署目标设置为12.0(或更高,但能超过18.5.99)。 具体操作步骤如下: ### 步骤1: 修改Podfile 1. 打开Flutter项目中的`ios/Podfile`文件(位于`ios`目录下)。 2. 在文件末尾(在`end`结束之前)添加以下代码: ```ruby post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' # 设置为12.0 end end end ``` 注意:这里将部署目标设置为12.0,因为警告中要求的最低版本是12.0。 ### 步骤2: 重新安装Pods 1. 在终端中,进入项目的`ios`目录: ```bash cd ios ``` 2. 运行以下命令来重新安装Pods(这将应用新的部署目标设置): ```bash pod install ``` 或者,如果你之前已经安装过Pods,可以使用: ```bash pod update ``` ### 步骤3: 清理并重新运行Flutter项目 1. 返回项目根目录,运行以下命令清理构建: ```bash flutter clean ``` 2. 重新运行项目: ```bash flutter run ``` ### 注意事项 - 如果项目中有其他插件也指定了较低的部署目标,这个方法会统将所有Pod的部署目标设置为12.0,从而避免警告。 - 如果希望只修改特定插件(如`AMapFound`)的部署目标,可以在`post_install`脚本中添加条件判断(比如根据target的名称),但般情况下统设置更简单,也会产生问题。 - 设置部署目标为12.0后,你的应用将无法在iOS 12.0以下的设备上运行,但考虑到目前iOS 12.0以下的市场份额已经非常小,这通常是可接受的。如果需要支持更低版本,请考虑升级插件或替换其他方案(但根据高德地图SDK的要求,可能必须12.0以上)。 ### 引用说明 根据引用[2]和[3],我们得知高德地图的Flutter插件在3.0.0版本已经更新了SDK,并且通过设置Podfile中的部署目标可以解决类似问题。因此,上述方法符合官方推荐的解决方式[^2][^3]。 §§相关问题§§ 1. Flutter项目如何设置iOS部署目标版本? 2. 如何更新高德地图Flutter插件到最新版? 3. 如何解决Flutter项目中其他插件的部署目标兼容问题? </think> ### 解决 `amap_flutter_map: ^3.0.0` 的 iOS Simulator 部署目标警告 #### 问题分析 当您在 Flutter 项目中集成 `amap_flutter_map: ^3.0.0` 时,出现的警告: ``` iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 9.0, but the range of supported deployment target versions is 12.0 to 18.5.99 ``` 说明高德地图 SDK 要求最低部署目标为 iOS 12.0,但您的项目或依赖设置了更低的 9.0(已被现代 Xcode 支持)。以下是完整解决方案: --- ### 解决方案分步操作(Flutter 项目专用) #### 步骤 1: 修改 iOS 部署目标设置 1. **打开项目文件**: - 导航到 `ios/Runner.xcodeproj`(右键选择 "Show in Finder") - 双击在 Xcode 中打开 2. **调整部署目标**: - 在 Xcode 左侧选择 "Runner" 项目 - 切换到 **General > Minimum Deployments** - 将值从 `9.0` 改为 `12.0` - ![部署目标设置示意图](https://via.placeholder.com/600x300?text=iOS+Deployment+Target+12.0) #### 步骤 2: 强制更新 Pod 部署目标(关键!) 1. **修改 `ios/Podfile`**: - 在 `ios` 目录打开 `Podfile` - 在文件末尾添加以下代码(参考引用[3]): ```ruby post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' # 设为12.0 end # AMapFound 目标特殊处理 if target.name == 'AMapFound' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' end end end ``` #### 步骤 3: 更新插件依赖 1. **升级高德插件**: - 在 `pubspec.yaml` 中确认版本: ```yaml dependencies: amap_flutter_map: ^3.0.0 # 确保是3.0.0+(引用[2]) ``` - 终端执行: ```bash flutter pub upgrade amap_flutter_map ``` #### 步骤 4: 清理重建项目 执行以下终端命令: ```bash flutter clean # 清理缓存 cd ios pod install # 应用Podfile修改(关键步骤) cd .. flutter run # 重新运行 ``` --- ### 验证与注意事项 1. **警告消失标志**: - 成功修复后,控制台再显示 `AMapFound` 的部署目标警告 - 地图功能应正常加载(如未显示,检查高德API密钥配置) 2. **兼容性说明**: - iOS 12.0+ 覆盖率超过 99%(苹果官方数据),无需担心设备兼容 - 如果必须支持 iOS 9.x 设备(极少数情况),需降级到 `amap_flutter_map: 2.x`(引用[1]),但会缺失新功能 3. **常见问题排查**: ```bash # 查看AMapFound实际部署目标 cd ios xcodebuild -showBuildSettings -target AMapFound | grep DEPLOYMENT ``` > **技术原理**:Flutter 插件通过 Pod 集成原生 SDK,高德地图 3.0+ SDK 已放弃对 iOS 12 以下的支持(引用[2])。通过 Podfile 的 `post_install` 钩子可覆盖所有依赖的部署目标设置(引用[3])[^2][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值