Portar aplicativos para o Mac é finalmente possível graças ao Catalyst , o problema é que vários pods não suportam o AppKit. O mais comum seria o Crashlytics / Firebase.
In [...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '[...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64
Como é um tópico recente, não consegui encontrar documentos sobre como remover um pod da minha compilação para o macOS, mas mantê-lo para iOS e iPadO S.
É possível usar no código:
#if !targetEnvironment(macCatalyst)
// Code to exclude for your macOS app
#endif
Mas essa parte do problema, a outra parte é vincular o pod apenas para iOS ...
Qual seria o melhor / mais fácil curso de ação quando a biblioteca não é vital para o macOS, mas ainda é desejada no iOS?
if target.name.start_with?("Pods")
para pegar todos os alvos de pod.if [[ ${IS_MACCATALYST} != "YES" ]]; then "${PODS_ROOT}/Fabric/run" fi
Abra o arquivo Pods- $ projectname.release.xcconfig no diretório Pods do seu projeto e localize a linha OTHER_LDFLAGS. Adicione
[sdk=iphone*]
imediatamente após o nome da variável (por exemplo, o meu agora se parece com isso):Isso define condicionalmente as opções de link apenas ao criar variantes do iphone, impedindo que o pod seja vinculado no OSX. É claro que você menciona, isso precisa ser combinado com
#if !targetEnvironment(macCatalyst)
e#endif
em torno do código chamando o pod ou você vai ter erros vinculador.Isso me permitiu superar o mesmo problema. (E caso você esteja se perguntando que outras coisas legais, além de variáveis condicionais, você pode adicionar aos seus arquivos .xcconfig, veja uma referência que encontrei: https://pewpewthespells.com/blog/xcconfig_guide.html )
fonte
pod install
. Eu recomendaria ler esta resposta de Fernando Moya de Rivas para a melhor alternativaCom cocoapods 1.8.4, tive que adaptar a excelente resposta do @ AncAinu da seguinte maneira:
fonte
[]
Tenho uma solução atualizada que funciona para mim com os seguintes pods do Google:
fonte
ld: in /Users/<name>/source/<app>/Pods/Fabric/iOS/Fabric.framework/Fabric(Fabric.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, for architecture x86_64
uso exatamente o que você tem acima, menos oGoogleMobileAds
eGoogle-Mobile-Ads-SDK
. Por que estou recebendo isso?Para a melhor abordagem de manipulação de estruturas de suporte não suportadas para o Catalyst, vocês devem ler a solução de Fernando Moya de Ri .
Ele basicamente disse que você só precisa definir uma matriz de todas as libs você não deseja instalar no Mac OSX, como este:
['Fabric', 'Crashlytics', 'Firebase/Core', ...]
.Em seguida, seu arquivo pod pode parecer simples assim:
fonte