第一次创建Flutter时,需要注意的地方以及报错。

本文介绍了在Android Studio中创建Flutter项目时可能遇到的问题及其解决办法,包括错误提示、配置问题及模拟器显示问题等。

android studio安装完flutter插件后,点击File->New->New Flutter Project,创建Flutter工程。

可能会遇到的报错;

java.lang.IllegalStateException: compileSdkVersion is not specified.

Could not download ddmlib.jar (com.android.tools.ddms:ddmlib:26.1.2)

Unknown host 'jcenter.bintray.com'. You may need to adjust the proxy settings in Gradle

等等。

需要注意的地方:

1:根目录下的build.gradle中指定的android studio中的gradle插件版本是否已下载,是否已android studio版本一致。并且Flutter SDK路径(flutter\packages\flutter_tools\gradle)中的flutter.gradle文件中gradle版本也确保一致。

build.gradle:

flutter.gradle:

2:gradle-wrapper.properties文件中指定的gradle版本,如果gradle使用离线模式,本地是否下载(一般为C:\Users\xxx\.gradle\caches路径)

3:如果android studio没有设置代理,那么flutter.gradle中的maven地址需要换一个可访问的镜像如:http://maven.aliyun.com/nexus/content/groups/public/

4.如果使用模拟器运行,会出现白屏,报错Failed to setup Skia Gr context,字面翻译就是影像不能显示,需要运行时加上配置参数flutter run --enable-software-rendering,Android studio选中run->Edit Configurations

也可以收集详细的硬件日志,通过skia apk.https://skia.org/dev/testing/skqp

ps:

夜神模拟器4.4版本装上收集日志的apk skqp-universal-3e34285f2a.apk,会报错,需要Android升级到5.1版本上

java.lang.RuntimeException: 
Unable to start activity ComponentInfo{org.skia.skqp/org.skia.skqp.MainActivity}: 
android.content.res.Resources$NotFoundException: 
File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052

夜神模拟器4.4版本运行flutter 应用会白屏,但是升级到5.1后就不会报错了...

 

参考:

https://www.jianshu.com/p/c02249c5232e

https://github.com/flutter/flutter/issues/19726

 

 

 

 

<think>我们正在解决一个具体问题:在现有iOS项目中接入Flutter SDK后,执行`pod install`出现`cannot load such file .ios/Flutter/podhelper.rb`错误。 根据引用[1]和引用[2]的内容,我们在Podfile中使用了如下代码: ``` flutter_application_path = '../my_flutter_module' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') ``` 这个错误通常是由于文件路径不正确导致的。具体来说,`podhelper.rb`文件没有被找到。 我们需要检查以下几个方面: 1. **Flutter模块的路径是否正确**:确保`flutter_application_path`设置的路径是相对于Podfile所在目录的正确路径。 2. **Flutter模块是否已经构建**:因为`.ios`目录是在构建Flutter模块后生成的(或者通过`flutter create .`生成),如果没有构建,则不会有这个目录。 3. **Flutter模块的创建方式**:我们是否正确地创建Flutter模块? 根据之前的步骤,我们创建Flutter模块的命令是: ```bash flutter create --template module my_flutter_module ``` 这个命令会在当前目录下创建一个名为`my_flutter_module`的Flutter模块。然后,我们需要进入这个模块并构建它(或者至少运行一次,以便生成`.ios`目录)。 但是,注意:在Flutter的新版本中(特别是Flutter 1.12之后),Flutter模块的目录结构有所变化,生成的iOS相关文件在`.ios`目录下(隐藏目录)。因此,我们需要确保这个目录已经被生成。 解决步骤: 1. **确认Flutter模块路径**: 假设我们的iOS项目目录结构如下: ``` project/ iOSProject/ # 现有的iOS项目目录,其中包含Podfile iOSProject.xcodeproj Podfile my_flutter_module/ # Flutter模块目录 ``` 那么,在iOSProject目录下的Podfile中,我们设置的`flutter_application_path`应该是`'../my_flutter_module'`。 2. **检查Flutter模块中是否有.ios/Flutter/podhelper.rb文件**: 进入`my_flutter_module`目录,检查是否存在`.ios`目录(注意,这是一个隐藏目录)。然后,检查`.ios/Flutter/podhelper.rb`文件是否存在。 如果没有,我们可以尝试在Flutter模块目录下执行以下命令来生成: ```bash cd my_flutter_module flutter pub get flutter build ios --no-codesign ``` 或者,也可以尝试运行: ```bash flutter create . ``` 注意:如果`.ios`目录已经存在,那么`flutter create .`会提示是否覆盖,一般选择不覆盖(输入n),因为可能会覆盖掉我们已有的配置。所以,更安全的做法是使用`flutter build ios --no-codesign`来构建。 3. **修改Podfile中的路径引用**: 如果路径中包含空格或特殊字符,可能会导致问题。我们可以尝试使用双引号包裹路径,或者确保路径不包含空格。 4. **使用绝对路径**: 如果相对路径有问题,可以尝试使用绝对路径。例如: ```ruby flutter_application_path = File.expand_path('../my_flutter_module', __dir__) ``` 5. **检查Flutter环境**: 确保Flutter SDK已经被正确安装,并且环境变量设置正确。在终端中执行`flutter doctor`,确保没有报错。 6. **升级Flutter和CocoaPods**: 可能是由于版本问题,尝试升级到最新版本的Flutter和CocoaPods。 总结解决方案步骤: 第一步:确认文件是否存在 - 进入Flutter模块目录,检查`.ios/Flutter/podhelper.rb`是否存在。 第二步:生成podhelper.rb文件(如果不存在) - 在Flutter模块目录下执行: ```bash flutter pub get flutter build ios --no-codesign ``` 第三步:检查Podfile中的路径 - 确保`flutter_application_path`指向正确的Flutter模块目录(相对或绝对路径)。 第四步:使用绝对路径(可选) - 如果相对路径有问题,可以尝试绝对路径。 第五步:重新运行pod install 如果以上步骤仍然不能解决问题,可以考虑在Flutter模块目录下运行: ```bash flutter clean flutter pub get ``` 然后重新生成一次。 注意:在Flutter的新版本(如3.0以上)中,可能会有些变化,但基本思路不变。 引用[1]和引用[2]都提到了使用`podhelper.rb`文件,所以这个文件的存在是关键。 最后,我们给出一个完整的Podfile示例(假设iOS项目目录和Flutter模块目录是兄弟目录): ```ruby # 使用相对路径 flutter_application_path = '../my_flutter_module' # 或者使用绝对路径(更可靠) # flutter_application_path = File.expand_path('../my_flutter_module', __dir__) load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'Your_App_Target' do # 安装所有Flutter pods install_all_flutter_pods(flutter_application_path) # 其他的pod依赖 end ``` 如果文件确实存在,但依然无法加载,可能是权限问题,可以尝试修改文件权限。 相关问题: 1. 如何正确创建Flutter模块以集成到现有iOS项目中? 2. 在集成Flutter模块,CocoaPods还有哪些常见错误? 3. 如何确保Flutter模块的构建配置与现有iOS项目兼容? </think>### 解决 `pod install` 报错 `cannot load such file .ios/Flutter/podhelper.rb` 的方法 此错误通常由路径配置问题或Flutter模块未正确初始化导致。以下是详细解决步骤: --- #### 🔧 1. **确认 Flutter 模块路径配置** ```ruby # Podfile 正确配置示例 flutter_application_path = '../my_flutter_module' # [!code focus] load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') # [!code focus] ``` - **路径检查**: - 确保路径为**相对路径**(`../`表示上一级目录) - 使用 `pwd` 命令确认 iOS 项目与 Flutter 模块的物理位置关系 - 验证路径是否包含空格或特殊字符(建议使用纯英文路径) --- #### ⚙️ 2. **生成缺失的 `podhelper.rb` 文件** 在 Flutter 模块目录执行: ```bash cd your_flutter_module flutter clean # [!code focus] flutter pub get # [!code focus] flutter build ios --no-codesign # [!code focus] ``` - 此操作会生成 `.ios/Flutter/podhelper.rb` 文件 - 检查生成结果:`ls .ios/Flutter/podhelper.rb` --- #### 3. **检查 Flutter 模块创建方式** - **错误方式**:直接复制 Flutter 项目 - **正确方式**: ```bash # 在 iOS 项目同级目录执行 flutter create --template module my_flutter_module ``` - 验证模块结构应包含: ``` my_flutter_module/ ├── .ios/ # 关键隐藏目录 ├── lib/ └── pubspec.yaml ``` --- #### 📂 4. **手动创建缺失目录(备用方案)** 若步骤 2 无效: ```bash cd your_flutter_module mkdir -p .ios/Flutter # [!code focus] echo "require_relative 'flutter_engine'" > .ios/Flutter/podhelper.rb # [!code focus] flutter build ios --no-codesign ``` --- #### 🔍 5. **环境验证** 执行诊断命令: ```bash flutter doctor -v # 检查iOS工具链 pod --version # 确认CocoaPods≥1.10.0 which flutter # 检查Flutter PATH配置 ``` --- #### ⚡ 6. **重新集成** 完成修复后: ```bash cd ios_project pod cache clean --all # [!code focus] pod deintegrate # [!code focus] pod install # [!code focus] ``` > 💡 **根本原因**:该错误通常由以下情况触发: > 1. Flutter 模块未通过 `--template module` 创建 > 2. `flutter build ios` 未执行导致文件缺失 > 3. Podfile 中的路径与实际位置不匹配[^1][^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值