这涉及flutter
的{{1}}插件。
我在两台mac计算机上运行相同的代码。
我刚刚对后者进行了全新安装,并在FirebaseAuthPlugin.m
上出现了构建错误:不兼容的块指针
/Users/sergebesnard/Development/flutter/.pub-cache/hosted/pub.dartlang.org/
firebase_auth-0.5.9/ios/Classes/FirebaseAuthPlugin.m:69:53:
Incompatible block pointer types sending 'void (^)(FIRUser *__strong, NSError *__strong)' to parameter of type 'FIRAuthDataResultCallback _Nullable' (aka 'void (^)(FIRAuthDataResult * _Nullable __strong, NSError * _Nullable __strong)')
在我的笔记本电脑上,代码构建顺利,唯一的区别是测试版,0.3.1
并安装了android工具链。
在iMac上(失败):
flutter doctor -v
[✓] Flutter (Channel beta, v0.3.2, on Mac OS X 10.13.4 17E202, locale fr-BE)
• Flutter version 0.3.2 at /Users/sergebesnard/Development/flutter
• Framework revision 44b7e7d3f4 (3 weeks ago), 2018-04-20 01:02:44 -0700
• Engine revision 09d05a3891
• Dart version 2.0.0-dev.48.0.flutter-fe606f890b
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.io/setup/#android-setup for detailed instructions).
If Android SDK has been installed to a custom location, set $ANDROID_HOME to that location.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.3, Build version 9E145
• ios-deploy 1.9.2
• CocoaPods version 1.5.0
[✗] Android Studio (not installed)
• Android Studio not found; download from https://developer.android.com/studio/index.html
(or visit https://flutter.io/setup/#android-setup for detailed instructions).
[✓] VS Code (version 1.23.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Dart Code extension version 2.12.1
[✓] Connected devices (1 available)
• iPhone X • 780C4B10-21A6-41E0-9A05-A6175FC20FA0 • ios • iOS 11.3 (simulator)
! Doctor found issues in 2 categories.
在macbook上(正在工作):
[✓] Flutter (Channel beta, v0.3.1, on Mac OS X 10.13.4 17E199, locale fr-BE)
• Flutter version 0.3.1 at /Users/sergebesnard/flutter
• Framework revision 12bbaba9ae (3 weeks ago), 2018-04-19 23:36:15 -0700
• Engine revision 09d05a3891
• Dart version 2.0.0-dev.48.0.flutter-fe606f890b
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.2)
• Android SDK at /Users/sergebesnard/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.0.2
• 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-915-b08)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 9.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.3, Build version 9E145
• ios-deploy 1.9.2
• CocoaPods version 1.5.0
[✓] Android Studio (version 3.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 20.0.1
• Dart plugin version 171.4424
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
[✓] IntelliJ IDEA Community Edition (version 2017.3.4)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin version 23.2.2
• Dart plugin version 173.4700
[✓] VS Code (version 1.23.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Dart Code extension version 2.12.0
[✓] Connected devices (1 available)
• iPhone X • 03F5FA6E-7332-46A2-9BF8-A1CACE723CC8 • ios • iOS 11.3 (simulator)
• No issues found!
Podfile是一样的:
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
pods_ary = []
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) { |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
pods_ary.push({:name => podname, :path => podpath});
else
puts "Invalid plugin specification: #{line}"
end
}
return pods_ary
end
target 'Runner' do
use_frameworks!
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf Pods/.symlinks')
system('mkdir -p Pods/.symlinks/plugins')
# Flutter Pods
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
if generated_xcode_build_settings.empty?
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
end
generated_xcode_build_settings.map { |p|
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
symlink = File.join('Pods', '.symlinks', 'flutter')
File.symlink(File.dirname(p[:path]), symlink)
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
end
}
# Plugin Pods
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.map { |p|
symlink = File.join('Pods', '.symlinks', 'plugins', p[:name])
File.symlink(p[:path], symlink)
pod p[:name], :path => File.join(symlink, 'ios')
}
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
在两种情况下,pod版本都是1.5.0。
Pubspec.yaml:
dependencies:
flutter:
sdk: flutter
google_sign_in: "^3.0.2"
firebase_analytics: "^0.3.3"
firebase_auth: "^0.5.5"
firebase_database: "^0.4.6"
firebase_storage: "^0.2.6"
cloud_firestore: "^0.6.3"
#firebase_messaging: "^0.2.4" removed due to bug in android
simple_permissions: "^0.1.2"
diff_match_patch : 0.2.1
path_provider: "^0.4.0"
intl: "^0.15.6"
#timeago: 1.2.0
#side_header_list_view: "^0.0.2"
uuid: "^1.0.0"
#location: "^1.2.0" causes a problem in android
robyn_nlp:
path: ../robyn-nlp
async_message_queue_controller:
path: ../AsyncMessageQueueProcessor
oscillo_wave_painter:
path: ../oscillo-wave-painter
#medcorder_audio:
# path: ../flutter_audio # super important, because the original doesn't work
voice_recorder:
path: ../voice_recorder
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.0
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- assets/logo-solo.png
- assets/banner.png
我坦率地不想在我的工作设置上测试升级颤动sdk,我仍然需要处理那些东西......
我不知道这是否有用,但在设置过程中,我遇到了在XCODE上安装颤动的问题,因为当时XCODE没有完全设置。 颤动的医生确实要求我安装包六,并因为python @ 2版本中的冲突而出现问题,所以我强制通过brew python @ 2卸载并重新安装它,然后可以通过`pip install six``安装
如果这是原因,我将不得不重新安装XCODE&扑。希望不是这样。
由于 哔叽
答案 0 :(得分:7)
更新cocoapods的存储库。
pod repo update
然后删除Podfile,Podfile.lock,Pos目录,.flutter-plugins,.packages,pubspec.lock
答案 1 :(得分:0)
这是我的提示。只需将cocoapods升级到1.5.3+。我通过brew安装可可豆。
检查可可豆的版本
pod --version
升级
brew upgrade cocoapods
如果遇到错误冲突,请链接
brew link --overwrite cocoapods
再次安装Pod
pod install