Flutter-geolocator: Build gagal, untuk iOS: file 'geolocator / geolocator-Swift.h' tidak ditemukan

Dibuat pada 26 Jun 2018  ·  12Komentar  ·  Sumber: Baseflow/flutter-geolocator

menjalankan flutter build ios --release:

=== MEMBANGUN TARGET firebase_messaging OF PROYECT Pods WITH CONFIGURATION Release ===
/ Users / * * / development / flutter / .pub-cache / hosted / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m: 2: 9: kesalahan fatal: 'geolocator / geolocator-Swift File .h 'tidak ditemukan

impor

Keluaran dokter saya:
Ringkasan dokter (untuk melihat semua detail, jalankan flutter doctor -v):
[✓] Flutter (Pengembangan saluran, v0.5.5, di Mac OS X 10.13.3 17D102, lokal pt-PT)
[✗] Rantai alat Android - kembangkan untuk perangkat Android
✗ Tidak dapat menemukan SDK Android.
Instal Android Studio dari: https://developer.android.com/studio/index.html
Pada peluncuran pertama, ini akan membantu Anda dalam menginstal komponen Android SDK.
(atau kunjungi https://flutter.io/setup/#android-setup untuk petunjuk mendetail).
Jika Android SDK telah diinstal ke lokasi khusus, setel $ ANDROID_HOME ke lokasi itu.
[✓] Rantai alat iOS - kembangkan untuk perangkat iOS (Xcode 9.2)
[✗] Android Studio (tidak terpasang)
[!] VS Code (versi 1.14.2)
[!] Perangkat yang terhubung
! Tidak ada perangkat yang tersedia

bug

Komentar yang paling membantu

@mvanbeusekom baru saja menjalankan beberapa pengujian dalam aplikasi flutter yang baru saja dibuat - faktanya - saat "use_frameworks!" tidak ada, build gagal.

Juga, baru saja mengunggah build ke appstore (masih beta) tetapi semuanya berjalan lancar.
image

AFAIK, setidaknya bagi saya, masalah terpecahkan.

Semua 12 komentar

@ manuelgomes2 terima kasih banyak telah menghubungi kami.

Kami menganalisis masalah tersebut dan dapat mereproduksinya dan sedang berusaha memperbaikinya (lihat PR # 18)

@ manuelgomes2 setelah menghubungi Google, tampaknya saat ini ada masalah dengan aplikasi Flutter yang dibuat menggunakan Objective-C (yang merupakan default) yang menggunakan plugin Swift. Lihat juga umpan balik yang saya terima untuk pertanyaan Stack Overflow saya.

Solusi untuk saat ini adalah membuat aplikasi Anda menggunakan Swift di iOS (misalnya menggunakan perintah Flutter CLI berikut flutter create -i swift my_app , perhatikan tombol -i swift ). Namun saya harus memperingatkan Anda bahwa ini akan menghasilkan overhead yang signifikan pada ukuran Aplikasi.

Sementara itu, kami akan menerjemahkan plugin dari Swift ke Objective-C sehingga solusi di atas tidak diperlukan dan juga tidak memengaruhi ukuran Aplikasi secara negatif.

Terima kasih atas waktunya, tetapi "flutter create -i swift my_app" bukanlah solusinya - saya telah membuat aplikasi ios saya menggunakan "-i swift" dari awal, tetapi masalah tetap ada ...

Satu hal yang aneh, ketika saya membuka GeneratedPluginRegistrant.m di XCode, plugin Anda muncul dalam warna yang berbeda (ungu) dengan semua plugin lainnya, dan merupakan satu-satunya yang tidak dimulai dengan "FLT" pada namanya - maaf atas ketidaktahuan saya, tetapi tahukah Anda mengapa dan jika ini, entah bagaimana, terkait? Apakah itu tampak sama untuk Anda jika Anda membuka file ini di XCode?

Terima kasih.

(catatan, di tangkapan layar):
image

@mvanbeusekom pembaruan lain, akhirnya saya berhasil membangun aplikasi: baris berikut dikomentari di podfile saya:
use_frameworks!
Hapus tanda komentar pada baris dan aplikasi dikompilasi menggunakan plugin Anda. Sekarang aplikasi macet saat dimulai, tetapi saya akan memeriksanya (mungkin beberapa pengaturan diperlukan agar aplikasi ini menggunakan layanan lokasi di ios)
Semoga ini membantu.

@mvanbeusekom baru saja menjalankan beberapa pengujian dalam aplikasi flutter yang baru saja dibuat - faktanya - saat "use_frameworks!" tidak ada, build gagal.

Juga, baru saja mengunggah build ke appstore (masih beta) tetapi semuanya berjalan lancar.
image

AFAIK, setidaknya bagi saya, masalah terpecahkan.

@ manuelgomes2 itu berita bagus, terima kasih banyak atas umpan baliknya.

Hanya untuk memastikan, kemungkinan alasan aplikasi Anda mogok saat dimulai terkait dengan fakta bahwa izin untuk penggunaan layanan berbasis lokasi tidak ada di file Info.plist (dokumentasi tentang izin untuk menambahkan adalah dalam file README.md ).

Setelah beberapa Googling, saya menemukan utas berikut yang mungkin berguna (saya juga akan menambahkan ini ke README kami): https://github.com/flutter/flutter/issues/16049

Hai!

Melihat masalah ini, saya melihat bahwa pada awalnya @ manuelgomes2 menggunakan firebase_messaging dan geolocator , dan dia mengalami masalah tersebut.

Kemudian, dia membuat aplikasi baru tanpa firebase_messaging , dan mampu membuatnya.

Manuel, apakah Anda dapat menggabungkan keduanya dalam satu proyek?

Itu saat ini masalah saya . Ternyata, saat menggunakan plugin Firebase, seseorang tidak dapat menggabungkannya dengan plugin lain yang menggunakan kode Swift, karena FB membutuhkan use_frameworks! keluar, dan plugin kode Swift membutuhkan use_frameworks! untuk masuk! : - /

(Saya sebenarnya berharap itu salah)

@ffeu pada pertanyaan SO tertaut yang Anda sebutkan, Anda mengalami kesalahan berikut:

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.

Bagi saya ini sepertinya Anda perlu menentukan versi Swift di Podfile dengan menambahkan baris berikut:

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

Ini harus menjadi bagian dari blok post_install , seperti ini:

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

Tidak yakin ini akan berhasil karena saya belum mengujinya, tetapi patut dicoba menurut saya. Beri tahu saya jika ini membantu.

PS Saya juga memposting di atas sebagai jawaban di Stack Overflow.

Hai Maurits, berhasil !! \Hai/

Saya telah mengujinya sebelumnya, tetapi hanya dengan '3.2'! Ini bekerja baik dengan 4.0 dan 4.1.

Terima kasih banyak!

Saya mengujinya menggunakan semua 3.2, 4.0, 4.1 dan 4.2 tetapi Xcode tetap menunjukkan kesalahan
'geolocator/geolocator-Swift.h' file not found Ini adalah kode di file saya

#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>

Adakah yang bisa membimbing saya?

Saya pikir itu versi Xcode Anda.

Periksa pertanyaan SO ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat