Flutter-geolocator: iOSの場合、ビルドに失敗しました: 'geolocator /geolocator-Swift.h'ファイルが見つかりません

作成日 2018年06月26日  ·  12コメント  ·  ソース: Baseflow/flutter-geolocator

flutter build ios --releaseを実行しています:

===構成を使用してプロジェクトポッドのターゲットfirebase_messagingを構築するリリース===
/ Users / * * / development / flutter / .pub-cache / hostsd / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m:2:9:致命的なエラー: 'geolocator / geolocator-Swift .h 'ファイルが見つかりません

インポート

私の医者の出力:
ドクターサマリー(すべての詳細を表示するには、フラッタードクター-vを実行します):
[✓]フラッター(チャンネル開発、v0.5.5、Mac OS X 10.13.3 17D102、ロケールpt-PT)
[✗] Androidツールチェーン-Androidデバイス用に開発
✗AndroidSDKが見つかりません。
https://developer.android.com/studio/index.htmlからAndroidStudioをインストールします
最初の起動時に、AndroidSDKコンポーネントのインストールを支援します。
(または詳細な手順については、https://flutter.io/setup/#android-setupにアクセスしてください)。
Android SDKがカスタムの場所にインストールされている場合は、$ ANDROID_HOMEをその場所に設定します。
[✓] iOSツールチェーン-iOSデバイス用に開発(Xcode 9.2)
[✗] Android Studio(インストールされていません)
[!] VS Code(バージョン1.14.2)
[!]接続されたデバイス
! 利用可能なデバイスはありません

bug

最も参考になるコメント

@mvanbeusekomは、「use_frameworks!」のときに、新しく作成されたクリーンなフラッターアプリでいくつかのテストを実行しました。 が存在しない場合、ビルドは失敗します。

また、ビルドをアプリストアにアップロードしたばかりですが(ベータ版はまだ)、すべてがスムーズに進みました。
image

AFAIKは、少なくとも私にとっては、問題は解決しました。

全てのコメント12件

@ manuelgomes2お問い合わせいただきありがとうございます。

問題を分析し、再現することができ、修正に取り組んでいます(PR#18を参照)

@ manuelgomes2 Googleに連絡した後、Swiftプラグインを使用するObjective-C(デフォルト)を使用して生成されたFlutterアプリに現在問題があるようです。 StackOverflowの質問で受け取ったフィードバックも参照してください。

今のところ回避策は、iOSでSwiftを使用するようにアプリを生成することです(たとえば、次のFlutter CLIコマンドflutter create -i swift my_app-i swiftスイッチに注意してください)。 ただし、これによりアプリのサイズにかなりのオーバーヘッドが発生することを警告する必要があります。

当面は、プラグインをSwiftからObjective-Cに変換する作業を行います。これにより、上記の回避策が不要になり、アプリのサイズに悪影響を与えることもありません。

お時間をいただきありがとうございますが、「flutter create -i swift my_app」は解決策ではありません。最初から「-iswift」を使用してiOSアプリを作成しましたが、問題は解決しません...

奇妙なことに、XCodeでGeneratedPluginRegistrant.mを開くと、プラグインは他のすべてのプラグインとは異なる色(紫)で表示され、名前が「FLT」で始まらない唯一のプラグインです。しかし、なぜ、そしてこれがどういうわけか関連しているのかどうか知っていますか? このファイルをXCodeで開いた場合、同じように見えますか?

ありがとうございました。

(スクリーンショットに注意してください):
image

@mvanbeusekom別のアップデート、私はついにアプリを構築することができました:次の行が私のポッドファイルにコメントされました:
use_frameworks!
行のコメントを外すと、プラグインを使用してアプリがコンパイルされます。 アプリは起動時にクラッシュしますが、それを調べます(おそらく、このアプリがiOSで位置情報サービスを使用するにはいくつかのセットアップが必要です)
お役に立てれば。

@mvanbeusekomは、「use_frameworks!」のときに、新しく作成されたクリーンなフラッターアプリでいくつかのテストを実行しました。 が存在しない場合、ビルドは失敗します。

また、ビルドをアプリストアにアップロードしたばかりですが(ベータ版はまだ)、すべてがスムーズに進みました。
image

AFAIKは、少なくとも私にとっては、問題は解決しました。

@ manuelgomes2は素晴らしいニュースです、フィードバックをありがとうございます。

念のために言っておきますが、アプリが起動時にクラッシュした/クラッシュした理由は、位置情報サービスの使用許可がInfo.plistファイルにないことに関連しています(追加する許可に関するドキュメントはREADME.mdファイル内)。

グーグルをした後、役立つかもしれない次のスレッドを見つけました(これもREADMEに追加します): https

こんにちは!

この問題を見ると、最初は@ manuelgomes2firebase_messaginggeolocatorを使用していて、彼が問題を抱えていたことがわかります。

その後、彼は明らかfirebase_messagingなしで新しいアプリを作成し、それを構築することができました。

マヌエル、同じプロジェクトで両方を混ぜることができましたか?

それが現在私の問題です。 どうやら、Firebaseプラグインを使用する場合、FBにはuse_frameworksが必要なため、Swiftコードを使用する別のプラグインと組み合わせることができません。 Swiftコードプラグインにはuse_frameworksが必要です。 入って! :-/

(私は実際にそれが間違っていると思っています)

あなたが言及したリンクされたSO質問の@ffeuは、次のエラーに

The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set in the build settings editor.

私には、次の行を追加して、 Podfile Swiftバージョンを指定する必要があるように見えます。

config.build_settings['SWIFT_VERSION'] = '4.1'

これは、次のようにpost_installブロックの一部である必要があります。

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

私はそれをテストしていないので、これがうまくいくかどうかはわかりませんが、試してみる価値はあります。 これが役に立ったら教えてください。

PS私はStackOverflowの回答として上記も投稿しました。

こんにちはモーリッツ、それはうまくいきました! \ o /

以前にテストしましたが、「3.2」でのみテストしました。 4.0と4.1の両方で動作しました。

どうもありがとう!

3.2、4.0、4.1、4.2をすべて使用してテストしましたが、XCodeにエラーが表示されます
'geolocator/geolocator-Swift.h' file not found これは私のファイルのコードです

#import "GeolocatorPlugin.h"
#import <geolocator/geolocator-Swift.h> // this line causes error

<strong i="8">@implementation</strong> GeolocatorPlugin
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
  [SwiftGeolocatorPlugin registerWithRegistrar:registrar];
}
<strong i="9">@end</strong>

誰かが私を導くことができますか?

Xcodeバージョンだと思います。

このSOの質問を確認してください。

このページは役に立ちましたか?
0 / 5 - 0 評価