Flutter-geolocator: Falha de compilação, para iOS: arquivo 'geolocator / geolocator-Swift.h' não encontrado

Criado em 26 jun. 2018  ·  12Comentários  ·  Fonte: Baseflow/flutter-geolocator

executando flutter build ios --release:

=== BUILD TARGET firebase_messaging OF PROJECT Pods COM CONFIGURATION Release ===
/ Users / * * / development / flutter / .pub-cache / hospedado / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m: 2: 9: erro fatal: 'geolocator / geolocator-Swift arquivo .h 'não encontrado

importar

Saída do meu médico:
Resumo médico (para ver todos os detalhes, execute flutter doctor -v):
[✓] Flutter (Channel dev, v0.5.5, no Mac OS X 10.13.3 17D102, locale pt-PT)
[✗] Conjunto de ferramentas Android - desenvolver para dispositivos Android
✗ Não foi possível localizar o Android SDK.
Instale o Android Studio em: https://developer.android.com/studio/index.html
Na primeira inicialização, ele o ajudará a instalar os componentes do Android SDK.
(ou visite https://flutter.io/setup/#android-setup para obter instruções detalhadas).
Se o Android SDK tiver sido instalado em um local personalizado, defina $ ANDROID_HOME para esse local.
[✓] conjunto de ferramentas iOS - desenvolver para dispositivos iOS (Xcode 9.2)
[✗] Android Studio (não instalado)
[!] Código VS (versão 1.14.2)
[!] Dispositivos conectados
! Nenhum dispositivo disponível

bug

Comentários muito úteis

@mvanbeusekom acabou de executar alguns testes em um aplicativo de flutter recém-criado - é um fato - quando "use_frameworks!" não estiver presente, a compilação falhará.

Além disso, acabei de fazer o upload de uma compilação para o appstore (beta ainda), mas tudo correu bem.
image

AFAIK, pelo menos para mim, problema resolvido.

Todos 12 comentários

@ manuelgomes2 muito obrigado por

Analisamos o problema e conseguimos reproduzi-lo e estamos trabalhando para corrigi-lo (consulte PR # 18)

@ manuelgomes2 após entrar em contato com o Google, parece que há um problema no momento com aplicativos Flutter gerados usando Objective-C (que é o padrão) que consomem plug-ins Swift. Veja também o feedback que recebi sobre minha pergunta sobre o Stack Overflow .

A solução agora é gerar seu aplicativo para usar Swift no iOS (por exemplo, usando o seguinte comando Flutter CLI flutter create -i swift my_app , observe a opção -i swift ). Devo alertá-lo, no entanto, que isso irá gerar uma sobrecarga significativa no tamanho do aplicativo.

Enquanto isso, estaremos trabalhando na tradução do plug-in de Swift para Objective-C para que a solução acima não seja necessária e também não afete o tamanho do aplicativo de forma negativa.

Obrigado pelo seu tempo, mas o "flutter create -i swift my_app" não é a solução - eu criei meu aplicativo ios usando "-i swift" desde o início, mas o problema persiste ...

Uma coisa estranha, quando eu abro o GeneratedPluginRegistrant.m no XCode, seu plug-in aparece em uma cor diferente (roxo) para todos os outros plug-ins e é o único que não começa com "FLT" no nome - desculpe pela minha ignorância, mas você sabe por que e se isso está, de alguma forma, relacionado? Parece o mesmo para você se você abrir este arquivo no XCode?

Obrigada.

(observe na captura de tela):
image

@mvanbeusekom outra atualização, finalmente consegui construir o aplicativo: a seguinte linha foi comentada em meu podfile:
use_frameworks!
Descomente a linha e o aplicativo compila usando seu plugin. Agora, o aplicativo trava ao iniciar, mas vou analisar isso (provavelmente alguma configuração é necessária para que este aplicativo use serviços de localização no ios)
Espero que isto ajude.

@mvanbeusekom acabou de executar alguns testes em um aplicativo de flutter recém-criado - é um fato - quando "use_frameworks!" não estiver presente, a compilação falhará.

Além disso, acabei de fazer o upload de uma compilação para o appstore (beta ainda), mas tudo correu bem.
image

AFAIK, pelo menos para mim, problema resolvido.

@ manuelgomes2 que é uma ótima notícia, muito obrigado pelo feedback.

Só para ter certeza, o provável motivo de seu aplicativo travar / travar na inicialização está relacionado ao fato de que a permissão para o uso de serviços baseados em localização está ausente no arquivo Info.plist (documentação sobre quais permissões adicionar no arquivo README.md ).

Depois de pesquisar no Google, encontrei o seguinte tópico que pode ser útil (também irei adicioná-lo ao nosso README): https://github.com/flutter/flutter/issues/16049

Oi!

Vendo esse problema, vejo que no início @ manuelgomes2 estava usando firebase_messaging e geolocator , e ele estava tendo problemas.

Mais tarde, ele criou um novo aplicativo aparentemente sem firebase_messaging e foi capaz de criá-lo.

Manuel, você conseguiu misturar os dois no mesmo projeto?

Atualmente, esse é o meu problema . Aparentemente, ao usar os plug-ins Firebase, não se pode combiná-los com outro plug-in que use código Swift, pois o FB requer use_frameworks! para ser lançado, e os plug-ins de código Swift requerem use_frameworks! estar em! : - /

(Na verdade, espero que seja falso)

@ffeu na pergunta SO vinculada que você mencionou, encontrou o seguinte erro:

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.

Para mim, parece que você precisa especificar a versão do Swift em seu Podfile adicionando a seguinte linha:

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

Deve fazer parte do bloco post_install , 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.1'
    end
  end
end

Não tenho certeza se isso vai funcionar, já que não testei, mas vale a pena tentar, eu diria. Por favor, deixe-me saber se isso ajuda.

PS Eu também postei o acima como uma resposta no Stack Overflow.

Olá Maurits, funcionou !! \ o /

Eu testei anteriormente, mas apenas com '3.2'! Funcionou com 4.0 e 4.1.

Muito obrigado!

Eu testei usando todos os 3.2, 4.0, 4.1 e 4.2, mas ainda assim o XCode mostra o erro
'geolocator/geolocator-Swift.h' file not found Este é o código em meu arquivo

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

Alguém pode me orientar?

Acho que é a sua versão do Xcode.

Verifique esta pergunta SO.

Esta página foi útil?
0 / 5 - 0 avaliações