Flutter-geolocator: Erro de compilação no iOS

Criado em 15 jan. 2019  ·  3Comentários  ·  Fonte: Baseflow/flutter-geolocator

🐛 Relatório de bugs

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), (UTF8String: UnsafePointer), (string: String), (contentsOfFile: String), (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: 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 ];

Comportamento esperado

Sem erros.

Etapas de reprodução

Configuração

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

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:

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

Todos 3 comentários

+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
Esta página foi útil?
0 / 5 - 0 avaliações