Vou adicionar meus 2 centavos aqui (de uma maneira menos assustadora :-). Encontrei várias bibliotecas gordas de fornecedores que (por algum motivo) não funcionam da maneira normal adicionando-as ao Frameworks
diretório conforme documentado pela Apple. A única maneira que temos sido capazes de fazê-los trabalho é puxando a .framekwork
direita para o diretório do projeto e que liga a Embedded Frameworks
e Link Binary with Libraries
manualmente em configurações de compilação. Isso parece ter funcionado sem problemas, no entanto, como em qualquer biblioteca gorda, eles vêm com as Simulator Architectures estranhas i386
e x86_64
com as arm
arquiteturas.
Uma maneira rápida de verificar as arquiteturas na biblioteca de gorduras é
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Que deve cuspir uma saída algo como isto
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Isso confirma que você precisará "aparar a gordura" (ou seja, i386
& x86_64
) da sua estrutura antes do upload do iTunesConnect Archival, o que não permite essas arquiteturas (pois não são compatíveis com o iOS).
Agora, todas as respostas (ou pelo menos algumas das respostas) aqui fornecem esses maravilhosos Scripts de Execução que, com certeza, funcionam muito bem, mas apenas se o seu Framework residir no Frameworks
diretório Agora, a menos que você seja um viciado em scripts de shell, esses scripts sem modificações não funcionarão para o cenário que explico acima. No entanto, existe uma maneira muito simples de se livrar das arquiteturas i386
e x86_64
do framework.
Abra o terminal no diretório do seu projeto.
Mude o diretório diretamente para .framekwork
, como
cd YourProjectDir/YourProject/YourLibrary.framework
Execute a série de comandos conforme mostrado abaixo:
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Algumas coisas a serem observadas aqui - lipo -remove
precisam ser feitas uma vez para cada arquitetura remover. lipo
não modifica o arquivo de entrada, apenas produz um arquivo, portanto, é necessário executar lipo -remove
uma vez para x86_64
e i386
. Os comandos acima estão simplesmente fazendo isso renomeando o executável e, em seguida, removendo os arcos desejados e, em seguida, limpando os arquivos restantes. E é isso, agora você deve ver uma marca de seleção verde no upload do Application Loader Archival para o iTunesConnect.
Pontos a serem lembrados : As etapas acima devem ser feitas apenas durante a construção da produção, uma vez .framework
que serão retiradas as arquiteturas do simulador, as construções nos simuladores deixarão de funcionar (o que é esperado). No ambiente de desenvolvimento, não há necessidade de retirar as arquiteturas do .framework
arquivo, pois você deseja testar no Simulador e em um dispositivo físico. Se sua biblioteca de gorduras reside na Frameworks
pasta do projeto, observe a resposta aceita.