找不到 Flutter 插件 `geolocator-Swift.h` 文件
Flutter plugin `geolocator-Swift.h` file not found
我创建了一个小型 Flutter 插件,可用于监控 Flutter 应用程序中的位置变化(来源:https://github.com/baseflowit/flutter-geolocator)。在使用作为项目结构一部分的示例项目(由 Flutter CLI 生成)进行广泛测试后,我们决定发布该插件以供全世界使用。
现在我们收到了一些反馈,当您将在线 Dart Packages 存储库中的包包含到您的 Flutter 应用程序中时,iOS 版本无法编译并且 returns 出现以下异常:
/Users/maurits/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-0.0.2/ios/Classes/GeolocatorPlugin.m:2:9:
fatal error: 'geolocator/geolocator-Swift.h' file not found
当 运行 在调试模式下运行 Flutter 应用程序时,以及使用 flutter build ios --release
制作 iOS 包时,都会发生此错误。
由于 Geolocator
项目中的 example
应用程序可以正常运行,因此我有点迷失了这个错误的来源。我知道 geolocator/geolocator-Swift.h
文件是自动生成的,所以在我看来该文件并没有出现在最终的 Dart 包中。 运行 最终的 Dart 包 I 运行 以下命令:
flutter packages pub publish
这是 flutter doctor -v
的输出:
[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.5 17F77, locale en-NL)
• Flutter version 0.5.1 at /Users/maurits/Developer/flutter
• Framework revision c7ea3ca377 (4 weeks ago), 2018-05-29 21:07:33 +0200
• Engine revision 1ed25ca7b7
• Dart version 2.0.0-dev.58.0.flutter-f981f09760
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.0)
• Android SDK at /Users/maurits/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.0
• ANDROID_HOME = /Users/maurits/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.4.1, Build version 9F2000
• ios-deploy 1.9.2
• CocoaPods version 1.5.3
[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 25.0.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
[!] VS Code (version 1.24.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected devices (1 available)
• iPhone X • 69C349CF-81E1-47E8-B35A-A149D885CE43 • ios • iOS 11.4 (simulator)
如有任何帮助,我们将不胜感激。
由于插件是使用 Swift 编写的,因此使用的 Flutter 应用程序应基于 Swift 项目模板:
$ flutter create -i swift my_app
将 geolocator:
添加到 pubspec.yaml
并为 iOS 构建 my_app
然后使用最新的 Flutter beta 对我有用。
[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.5 17F77, locale en-US)
你去Ios/Podfile
添加以下行:
use_frameworks! # required by Geolocator
点赞
准备符号链接文件夹。我们使用符号链接来避免 Podfile.lock
指开发者机器上的绝对路径。
use_frameworks! # required by Geolocator
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
在此之后添加
config.build_settings['SWIFT_VERSION'] = '4.2'
喜欢以下内容:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['SWIFT_VERSION'] = '4.2' # added this
end
end
end
报错时的小补充:找不到模块'geocoder'
您需要 运行“Runner.xcworkspace”文件而不是“Runner.xcodeproj”文件
我创建了一个小型 Flutter 插件,可用于监控 Flutter 应用程序中的位置变化(来源:https://github.com/baseflowit/flutter-geolocator)。在使用作为项目结构一部分的示例项目(由 Flutter CLI 生成)进行广泛测试后,我们决定发布该插件以供全世界使用。
现在我们收到了一些反馈,当您将在线 Dart Packages 存储库中的包包含到您的 Flutter 应用程序中时,iOS 版本无法编译并且 returns 出现以下异常:
/Users/maurits/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/geolocator-0.0.2/ios/Classes/GeolocatorPlugin.m:2:9:
fatal error: 'geolocator/geolocator-Swift.h' file not found
当 运行 在调试模式下运行 Flutter 应用程序时,以及使用 flutter build ios --release
制作 iOS 包时,都会发生此错误。
由于 Geolocator
项目中的 example
应用程序可以正常运行,因此我有点迷失了这个错误的来源。我知道 geolocator/geolocator-Swift.h
文件是自动生成的,所以在我看来该文件并没有出现在最终的 Dart 包中。 运行 最终的 Dart 包 I 运行 以下命令:
flutter packages pub publish
这是 flutter doctor -v
的输出:
[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.5 17F77, locale en-NL)
• Flutter version 0.5.1 at /Users/maurits/Developer/flutter
• Framework revision c7ea3ca377 (4 weeks ago), 2018-05-29 21:07:33 +0200
• Engine revision 1ed25ca7b7
• Dart version 2.0.0-dev.58.0.flutter-f981f09760
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.0)
• Android SDK at /Users/maurits/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.0
• ANDROID_HOME = /Users/maurits/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.4.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.4.1, Build version 9F2000
• ios-deploy 1.9.2
• CocoaPods version 1.5.3
[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 25.0.1
• Dart plugin version 173.4700
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
[!] VS Code (version 1.24.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected devices (1 available)
• iPhone X • 69C349CF-81E1-47E8-B35A-A149D885CE43 • ios • iOS 11.4 (simulator)
如有任何帮助,我们将不胜感激。
由于插件是使用 Swift 编写的,因此使用的 Flutter 应用程序应基于 Swift 项目模板:
$ flutter create -i swift my_app
将 geolocator:
添加到 pubspec.yaml
并为 iOS 构建 my_app
然后使用最新的 Flutter beta 对我有用。
[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.5 17F77, locale en-US)
你去Ios/Podfile 添加以下行:
use_frameworks! # required by Geolocator
点赞
准备符号链接文件夹。我们使用符号链接来避免 Podfile.lock 指开发者机器上的绝对路径。
use_frameworks! # required by Geolocator
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
在此之后添加
config.build_settings['SWIFT_VERSION'] = '4.2'
喜欢以下内容:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['SWIFT_VERSION'] = '4.2' # added this
end
end
end
报错时的小补充:找不到模块'geocoder'
您需要 运行“Runner.xcworkspace”文件而不是“Runner.xcodeproj”文件