Flutter-geolocator: iOSでのコンパイルエラー

作成日 2019年01月15日  ·  3コメント  ·  ソース: Baseflow/flutter-geolocator

🐛バグレポート

geolocator:^ 2.1.1をプロジェクトに追加し、iOSをターゲットにすると、ビルドが失敗する原因となるさまざまな警告があります。

iOSアプリのビルドに失敗しました
Xcodeビルドからのエラー出力:

*ビルドに失敗しました*

Xcodeの出力:

/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager。 swift:50 :59:エラー:「openSettingsURLString」は「UIApplicationOpenSettingsURLString」に名前が変更されました
ガードレットurl=URL(文字列:UIApplication.openSettingsURLString)、
^ 〜〜〜〜 _ _
UIApplicationOpenSettingsURLString
UIKit.UIAp plication :64 :22:注:「openSettingsURLString」はSwift4.2で導入されました
パブリッククラスletopenSettingsURLString:String
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager。 swift:55 :45:エラー:引数ラベル'(rawValue:)'が使用可能なオーバーロードと一致しません
let optionsKeyDictionary = [UIApplication.OpenExternalURLOptionsKey(rawValue: "universalLinksOnly"):NSNumber(value:true)]
^ 〜〜〜〜〜〜〜〜 _ _ _ _
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager。 swift:55 :45:注:「UIApplication.OpenExternalURLOptionsKey」のオーバーロードは、これらの部分的に一致するパラメーターリストとともに存在します:(coder:NSCoder)、(stringLiteral:StaticString)、(format:NSString、CVarArg ...)、(string:NSString )、(utf8String:UnsafePointer)、(UTF8String:UnsafePointer)、(文字列:文字列)、(contentsOfFile:文字列)、(contentsOf:URL)、(contentsOfURL:URL)、(cString:UnsafePointer)、(CString:UnsafePointer)。
let optionsKeyDictionary = [UIApplication.OpenExternalURLOptionsKey(rawValue: "universalLinksOnly"):NSNumber(value:true)]
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager.swift:59:91:エラー:「openSettingsURLString」の名前が「」に変更されましたUIApplicationOpenSettingsURLString '
成功=UIApplication.shared.openURL(URL.init(string:UIApplication.openSettingsURLString)!)
^ 〜〜〜〜 _ _
UIApplicationOpenSettingsURLString
UIKit.UIApplication:64:22:注:「openSettingsURLString」はSwift4.2で導入されました
パブリッククラスletopenSettingsURLString:String
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager.swift:99:54:エラー:クロージャータプルパラメーター'(キー:文字列、値:任意)'は破棄をサポートしていません
return Dictionary(uniqueKeysWithValues:input.map {key、value in(UIApplication.OpenExternalURLOptionsKey(rawValue:key)、value)})
^ ~~(arg)-> <#Result#> let(key、value)= arg;























〜〜〜〜〜 ^ _ _ _


〜〜〜〜〜〜〜〜 ^ _ _ _ _


〜〜 _/ Volumes / PROJECTS / nomadradar-app / repo / nomadradar / ios / Pods / Target Support Files / url_launcher/url_launcher-prefixからインポートされたモジュール「UIKit」。

*)options completeHandler:(void(^ __nullable)(BOOL success))completion NS_AVAILABLE_IOS(10_0)NS_EXTENSION_UNAVAILABLE_IOS( "");^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:108:18:注: enclose'openURL:options :completionHandler: ' @availableチェックで、この警告を消音します[アプリケーションopenURL:url^ 〜〜 _/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:3:警告:「SFSafariViewController」はiOSでのみ使用可能です9.0以降[-Wunguarded-availability]SFSafariViewController * safari = [[SFSafariViewController alloc] in itWithURL:url ];^ 〜〜〜〜〜 _ _ _/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5からインポートされたモジュール「SafariServices」:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12:注: ' SFSafariViewController'はここで明示的に部分的にマークされています@interface SFSafariViewController:UIViewController^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:3:注:「SFSafariViewController」を@availableで囲みますこの警告を消音するためにチェックしてくださいSFSafariViewController * safari = [[SFSafariViewController alloc] in itWithURL:url ];^ 〜〜〜〜〜 _ _ _/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:38:警告:「SFSafariViewController」はiOSでのみ使用可能です9.0以降[-Wunguarded-availability]SFSafariViewController * safari = [[SFSafariViewController alloc] in itWithURL:url ];^ 〜〜〜 ~~~~ _
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5からインポートされたモジュール「SafariServices」:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12:注: ' SFSafariViewController'はここで明示的に部分的にマークされています
@interface SFSafariViewController:UIViewController
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:38:注:「SFSafariViewController」を@availableで囲みますこの警告を消音するためにチェックしてください
SFSafariViewController * safari = [[SFSafariViewController alloc] in itWithURL:url ];

予想される行動

エラーはありません。

複製手順

構成

バージョン: ^ 2.1.1

[✓]フラッター(チャンネル安定版、v1.0.0、Mac OS X 10.13.6 17G4015、ロケールde-DE)
•/Users/ dirkeisold / Programming/flutterにあるFlutterバージョン1.0.0
•フレームワークリビジョン5391447fae(7週間前)、2018-11-29 19:41:26 -0800
•エンジンリビジョン7375a0f414
•Dartバージョン2.1.0(ビルド2.1.0-dev.9.4 f9ebf21297)

[✓]Androidツールチェーン-Androidデバイス用に開発(Android SDK 28.0.3)
•/Users/ dirkeisold / Programming/android-sdk-macosxにあるAndroidSDK
•AndroidNDKの場所が構成されていません(オプション。ネイティブプロファイリングのサポートに役立ちます)
•プラットフォームandroid-28、build-tools 28.0.3
•ANDROID_HOME=/ Users / dirkeisold / Programming / android-sdk-macosx
•Javaバイナリ:/ Applications / Android Studio 3.2.app/Contents/jre/jdk/Contents/Home/bin/java
•JavaバージョンのOpenJDKランタイム環境(ビルド1.8.0_152-release-1136-b06)
•すべてのAndroidライセンスが受け入れられました。

[✓]iOSツールチェーン-iOSデバイス用に開発(Xcode 10.1)
•/Applications/Xcode.app/Contents/DeveloperのXcode
•Xcode10.1、ビルドバージョン10B61
•ios-deploy2.0.0
•CocoaPodsバージョン1.5.3

最も参考になるコメント

@ deisold@ tommaso1 、この問題が発生する理由は、おそらく古いSWIFTバージョンに対してコンパイルしているためです(現在のデフォルトは4.1だと思います)。 次の手順を使用してPodfileを更新することで、これを簡単に変更できます。

Podfileに、use_frameworksという行を追加してください。 (ターゲットランナーのすぐ下にこの行を追加するのが最善です。

target 'Runner' do
  use_frameworks!

また、Podfileで、post_installerブロックにconfig.build_settings['SWIFT_VERSION'] = '4.2'という行を追加してください。 この行を追加すると、post_installerブロックは次のようになります。

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'
    end
  end
end

全てのコメント3件

+1

フラッタークリーンを試してくださいflutter clean

@ deisold@ tommaso1 、この問題が発生する理由は、おそらく古いSWIFTバージョンに対してコンパイルしているためです(現在のデフォルトは4.1だと思います)。 次の手順を使用してPodfileを更新することで、これを簡単に変更できます。

Podfileに、use_frameworksという行を追加してください。 (ターゲットランナーのすぐ下にこの行を追加するのが最善です。

target 'Runner' do
  use_frameworks!

また、Podfileで、post_installerブロックにconfig.build_settings['SWIFT_VERSION'] = '4.2'という行を追加してください。 この行を追加すると、post_installerブロックは次のようになります。

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'
    end
  end
end
このページは役に立ちましたか?
0 / 5 - 0 評価