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 / hosted / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m : 2 : 9 : ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜ : 'geolocator / geolocator-Swift .h 'ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ˆ˜์ž…

๋‚ด ์˜์‚ฌ ์ถœ๋ ฅ :
์˜์‚ฌ ์š”์•ฝ (๋ชจ๋“  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋ณด๋ ค๋ฉด flutter doctor -v๋ฅผ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค) :
[โœ“] Flutter (์ฑ„๋„ ๊ฐœ๋ฐœ, v0.5.5, Mac OS X 10.13.3 17D102, ๋กœ์ผ€์ผ pt-PT)
[โœ—] Android ํˆด์ฒด์ธ-Android ๊ธฐ๊ธฐ ์šฉ ๊ฐœ๋ฐœ
โœ— Android SDK๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
https://developer.android.com/studio/index.html ์—์„œ Android Studio๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ Android SDK ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.
(๋˜๋Š” ์ž์„ธํ•œ ์ง€์นจ์€ https://flutter.io/setup/#android-setup์„ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค).
Android SDK๊ฐ€ ์‚ฌ์šฉ์ž ์ง€์ • ์œ„์น˜์— ์„ค์น˜๋œ ๊ฒฝ์šฐ $ ANDROID_HOME์„ ํ•ด๋‹น ์œ„์น˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
[โœ“] iOS ํˆด์ฒด์ธ-iOS ๊ธฐ๊ธฐ ์šฉ ๊ฐœ๋ฐœ (Xcode 9.2)
[โœ—] Android Studio (์„ค์น˜๋˜์ง€ ์•Š์Œ)
[!] VS Code (๋ฒ„์ „ 1.14.2)
[!] ์—ฐ๊ฒฐ๋œ ์žฅ์น˜
! ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์žฅ์น˜ ์—†์Œ

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@mvanbeusekom์€ ๋ฐฉ๊ธˆ ์ƒˆ๋กœ ๋งŒ๋“  ํ”Œ๋Ÿฌํ„ฐ ์•ฑ์—์„œ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค- "use_frameworks!" ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์•ฑ ์Šคํ† ์–ด์— ๋นŒ๋“œ๋ฅผ ์—…๋กœ๋“œํ–ˆ์ง€๋งŒ (๋ฒ ํƒ€ ์Šคํ‹ธ) ๋ชจ๋“  ๊ฒƒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
image

AFAIK, ์ ์–ด๋„ ๋‚˜์—๊ฒŒ๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  12 ๋Œ“๊ธ€

@ manuelgomes2 ๋ฌธ์˜ ํ•ด ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ˆ˜์ • ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค (PR # 18 ์ฐธ์กฐ).

@ manuelgomes2 Google์— ๋ฌธ์˜ ํ•œ ํ›„ ํ˜„์žฌ Swift ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” Objective-C (๊ธฐ๋ณธ๊ฐ’)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ ๋œ Flutter ์•ฑ์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Stack Overflow ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ iOS์—์„œ Swift ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์•ฑ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (์˜ˆ : ๋‹ค์Œ Flutter CLI ๋ช…๋ น flutter create -i swift my_app , -i swift ์Šค์œ„์น˜ ํ™•์ธ). ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์•ฑ ํฌ๊ธฐ์— ์ƒ๋‹นํ•œ ์˜ค๋ฒ„ ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๋Š” ์ ์„ ๊ฒฝ๊ณ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ๋™์•ˆ ์œ„์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ์•ฑ ํฌ๊ธฐ์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š๋„๋ก Swift์—์„œ Objective-C๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ฒˆ์—ญํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹œ๊ฐ„์„ ๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ "flutter create -i swift my_app"์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ "-i swift"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ iOS ์•ฑ์„ ๋งŒ๋“ค์—ˆ์ง€ ๋งŒ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์ด์ƒํ•œ ์ ์€ XCode์—์„œ GeneratedPluginRegistrant.m์„ ์—ด๋ฉด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‹ค๋ฅธ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ƒ‰์ƒ (๋ณด๋ผ์ƒ‰)์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ณ  ์ด๋ฆ„์— "FLT"๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์™œ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? XCode์—์„œ์ด ํŒŒ์ผ์„ ์—ด๋ฉด ๋™์ผํ•˜๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

(์Šคํฌ๋ฆฐ ์ƒท ์ฐธ๊ณ ) :
image

@mvanbeusekom ๋˜ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ, ๋งˆ์นจ๋‚ด ์•ฑ์„ ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค„์ด ๋‚ด podfile์— ์ฃผ์„์œผ๋กœ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
use_frameworks!
์ค„์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์•ฑ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ์•ฑ์ด ์‹œ์ž‘์‹œ ์ถฉ๋Œํ•˜์ง€๋งŒ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค (์ด ์•ฑ์ด ios์—์„œ ์œ„์น˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ผ๋ถ€ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค)
๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@mvanbeusekom์€ ๋ฐฉ๊ธˆ ์ƒˆ๋กœ ๋งŒ๋“  ํ”Œ๋Ÿฌํ„ฐ ์•ฑ์—์„œ ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค- "use_frameworks!" ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์•ฑ ์Šคํ† ์–ด์— ๋นŒ๋“œ๋ฅผ ์—…๋กœ๋“œํ–ˆ์ง€๋งŒ (๋ฒ ํƒ€ ์Šคํ‹ธ) ๋ชจ๋“  ๊ฒƒ์ด ์ˆœ์กฐ๋กญ๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
image

AFAIK, ์ ์–ด๋„ ๋‚˜์—๊ฒŒ๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@ manuelgomes2 ๋Š” ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ™•์‹คํžˆ, ์•ฑ์ด ์‹œ์ž‘๋  ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด์žˆ๋Š” ์ด์œ ๋Š” ์œ„์น˜ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ์‚ฌ์šฉ ๊ถŒํ•œ์ด Info.plist ํŒŒ์ผ์— ๋ˆ„๋ฝ๋˜์–ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค (์ถ”๊ฐ€ ํ•  ๊ถŒํ•œ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” README.md ํŒŒ์ผ).

์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์„ ํ•œ ํ›„ ๋„์›€์ด ๋ ๋งŒํ•œ ๋‹ค์Œ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค (README์—๋„ ์ถ”๊ฐ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค) : https://github.com/flutter/flutter/issues/16049

์•ˆ๋…•ํ•˜์„ธ์š”!

์ด ๋ฌธ์ œ๋ฅผ๋ณด๊ณ  ์ฒ˜์Œ์—๋Š” @ manuelgomes2 ๊ฐ€ firebase_messaging ๋ฐ geolocator ) ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ์•˜ ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๊ทธ๋Š” 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

ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ํšจ๊ณผ๊ฐ€ ์žˆ์„์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์‹œ๋„ํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์ถ”์‹  ๋‚˜๋Š” ๋˜ํ•œ Stack Overflow์— ๋Œ€ํ•œ ๋‹ต๋ณ€์œผ๋กœ ์œ„์˜ ๋‚ด์šฉ์„ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” Maurits, ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค! \์˜ํ˜•/

์ด์ „์— ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ '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 ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์งˆ๋ฌธ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰