Existem vários avisos que causam falha de compilação ao adicionar geolocator: ^2.1.1 ao projeto e direcionado ao iOS.
Falha ao criar o aplicativo iOS
Saída de erro da compilação do Xcode:
↳
* FALHA NA CONSTRUÇÃO *
Saída do Xcode:
↳
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager. swift:50 :59: erro: 'openSettingsURLString' foi renomeado para 'UIApplicationOpenSettingsURLString'
guard let url = URL(string: UIApplication.openSettingsURLString),
^ ~~~~ _ _
UIApplicationOpenSettingsURLString
Aplicação UIKit.UIAp :64 :22: nota: 'openSettingsURLString' foi introduzido no Swift 4.2
classe pública deixe openSettingsURLString: String
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager. swift:55 :45: erro: rótulos de argumento '(rawValue:)' não correspondem a nenhuma sobrecarga disponível
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: nota: existem sobrecargas para 'UIApplication.OpenExternalURLOptionsKey' com estas listas de parâmetros parcialmente correspondentes: (coder: NSCoder), (stringLiteral: StaticString), (formato: NSString, CVarArg...), (string: NSString ), (utf8String: 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: erro: 'openSettingsURLString' foi renomeado para ' UIApplicationOpenSettingsURLString'
deixe sucesso = UIApplication.shared.openURL(URL.init(string: UIApplication.openSettingsURLString)!)
^ ~~~~ _ _
UIApplicationOpenSettingsURLString
UIKit.UIApplication:64:22: nota: 'openSettingsURLString' foi introduzido no Swift 4.2
classe pública deixe openSettingsURLString: String
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/permission_handler-2.1.2/ios/Classes/PermissionManager.swift:99:54: erro: parâmetro de tupla de fechamento '(chave: String , valor: Qualquer)' não suporta desestruturação
return Dicionário(uniqueKeysWithValues: input.map { key, value in (UIApplication.OpenExternalURLOptionsKey(rawValue: key), value)})
^ ~~~Retorna/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:27:31: aviso: 'SFSafariViewController' só está disponível no iOS 9.0 ou mais recente [-Wunguarded-availability]- (void)safariViewController:(SFSafariViewController )controller^No módulo 'SafariServices' importado de /Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12: nota: ' SFSafariViewController' foi explicitamente marcado como parcial aqui@interface SFSafariViewController: UIViewController^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:27:1: note: anote 'safariViewController:didCompleteInitialLoad:' com um atributo de disponibilidade para silenciar este aviso- (void)safariViewController:(SFSafariViewController *)controller^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:43:40: aviso: 'SFSafariViewController' só está disponível no iOS 9.0 ou mais recente [-Wunguarded-availability]- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller {^No módulo 'SafariServices' importado de /Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12: nota: ' SFSafariViewController' foi explicitamente marcado como parcial aqui@interface SFSafariViewController: UIViewController^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:43:1: note: anote 'safariViewControllerDidFinish:' com uma disponibilidade atributo para silenciar este aviso- (void)safariViewControllerDidFinish:(SFSafariViewController *)controller {^API_AVAILABLE(ios(9.0))/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:29:31: aviso: comparação entre ponteiro e inteiro ('NSInteger ' (também conhecido como 'longo') e 'void *')if (_previousStatusBarStyle != nil) {~ ~ ~ ~ ~ ^ ~/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:111:45: aviso: comparação entre ponteiro e inteiro ('NSInteger ' (também conhecido como 'longo') e 'void *')if (self->_previousStatusBarStyle != nil) {~~~~~~~~ ^ ~ _ _ _ _~~ _No módulo 'UIKit' importado de /Volumes/PROJECTS/nomadradar-app/repo/nomadradar/ios/Pods/Target Support Files/url_launcher/url_launcher-prefix. *)options completeHandler:(void (^ __nullable)(BOOL sucesso))conclusão 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: note: inclua ' openURL:options :completionHandler: ' em uma verificação @available para silenciar este aviso[aplicativo openURL:url^~ ~/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:3: aviso: 'SFSafariViewController' só está disponível no iOS 9.0 ou mais recente [-Wunguarded-availability]SFSafariViewController *safari = [[SFSafariViewController alloc] in itWithURL:url ];^ ~~~~~~ _ _ _No módulo 'SafariServices' importado de /Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12: nota: ' SFSafariViewController' foi explicitamente marcado como parcial aqui@interface SFSafariViewController: UIViewController^/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:3: note: coloque 'SFSafariViewController' em um @available marque para silenciar este avisoSFSafariViewController *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: aviso: 'SFSafariViewController' só está disponível no iOS 9.0 ou mais recente [-Wunguarded-availability]SFSafariViewController *safari = [[SFSafariViewController alloc] in itWithURL:url ];^ ~~~~~~~ _ _
No módulo 'SafariServices' importado de /Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:5:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk/System/Library/Frameworks/SafariServices.framework/Headers/SFSafariViewController.h:27:12: nota: ' SFSafariViewController' foi explicitamente marcado como parcial aqui
@interface SFSafariViewController: UIViewController
^
/Users/dirkeisold/programming/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-3.0.3/ios/Classes/UrlLauncherPlugin.m:140:38: note: coloque 'SFSafariViewController' em um @available marque para silenciar este aviso
SFSafariViewController *safari = [[SFSafariViewController alloc] in itWithURL:url ];
Sem erros.
Versão: ^2.1.1
[✓] Flutter (Canal estável, v1.0.0, no Mac OS X 10.13.6 17G4015, localidade de-DE)
• Flutter versão 1.0.0 em /Users/dirkeisold/programming/flutter
• Revisão da estrutura 5391447fae (7 semanas atrás), 29/11/2018 19:41:26 -0800
• Revisão do motor 7375a0f414
• Dart versão 2.1.0 (compilação 2.1.0-dev.9.4 f9ebf21297)
[✓] Cadeia de ferramentas Android - desenvolver para dispositivos Android (Android SDK 28.0.3)
• SDK do Android em /Users/dirkeisold/programming/android-sdk-macosx
• Localização do Android NDK não configurada (opcional; útil para suporte de perfil nativo)
• Plataforma android-28, ferramentas de construção 28.0.3
• ANDROID_HOME = /Users/dirkeisold/programming/android-sdk-macosx
• Binário Java em: /Applications/Android Studio 3.2.app/Contents/jre/jdk/Contents/Home/bin/java
• Versão Java OpenJDK Runtime Environment (compilação 1.8.0_152-release-1136-b06)
• Todas as licenças do Android aceitas.
[✓] Cadeia de ferramentas iOS - desenvolver para dispositivos iOS (Xcode 10.1)
• Xcode em /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, versão de compilação 10B61
• ios-deploy 2.0.0
• CocoaPods versão 1.5.3
+1
tente limpar a vibração flutter clean
@deisold , @tommaso1 , o motivo pelo qual você está recebendo esse problema é provavelmente porque você ainda está compilando em uma versão SWIFT mais antiga (acredito que o padrão atual é 4.1). Você pode simplesmente alterar isso atualizando seu Podfile
usando as seguintes instruções.
Em seu Podfile certifique-se de adicionar a linha use_frameworks! (o melhor é adicionar esta linha diretamente abaixo do alvo Runner faça assim:
target 'Runner' do
use_frameworks!
Também no seu Podfile, certifique-se de adicionar a linha config.build_settings['SWIFT_VERSION'] = '4.2'
ao bloco post_installer. Depois de adicionar esta linha, o bloco post_installer deve ficar assim:
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
Comentários muito úteis
@deisold , @tommaso1 , o motivo pelo qual você está recebendo esse problema é provavelmente porque você ainda está compilando em uma versão SWIFT mais antiga (acredito que o padrão atual é 4.1). Você pode simplesmente alterar isso atualizando seu
Podfile
usando as seguintes instruções.Em seu Podfile certifique-se de adicionar a linha use_frameworks! (o melhor é adicionar esta linha diretamente abaixo do alvo Runner faça assim:
Também no seu Podfile, certifique-se de adicionar a linha
config.build_settings['SWIFT_VERSION'] = '4.2'
ao bloco post_installer. Depois de adicionar esta linha, o bloco post_installer deve ficar assim: