Cada uma das soluções que vi para esse problema parecia deselegante (copiar cabeçalhos no projeto do aplicativo) ou excessivamente simplificada a ponto de funcionar apenas em situações triviais.
A resposta curta
Adicione o seguinte caminho aos caminhos de pesquisa do cabeçalho do usuário
"$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
Por que isso funciona?
Primeiro, precisamos entender o problema. Em circunstâncias normais, ou seja, quando você executa, testa, cria um perfil ou analisa, o Xcode cria seu projeto e coloca a saída no diretório Build / Products / Configuration / Products, que está disponível por meio da macro $ BUILT_PRODUCTS_DIR .
A maioria dos guias sobre bibliotecas estáticas recomenda definir o caminho da pasta de cabeçalhos públicos como $ TARGET_NAME , o que significa que seu arquivo lib se torna $ BUILT_PRODUCTS_DIR /libTargetName.a e seus cabeçalhos são colocados em $ BUILT_PRODUCTS_DIR / TargetName. Contanto que seu aplicativo inclua $ BUILT_PRODUCTS_DIR em seus caminhos de pesquisa, as importações funcionarão nas 4 situações fornecidas acima. No entanto, isso não funcionará quando você tentar arquivar.
O arquivamento funciona um pouco diferente
Quando você arquiva um projeto, o Xcode usa uma pasta diferente chamada ArchiveIntermediates. Nessa pasta, você encontrará / YourAppName / BuildProductsPath / Release-iphoneos /. Esta é a pasta para a qual $ BUILT_PRODUCTS_DIR aponta quando você faz um arquivo. Se você olhar lá, verá que há um link simbólico para o arquivo de biblioteca estática construída, mas a pasta com os cabeçalhos está faltando.
Para encontrar os cabeçalhos (e o arquivo lib), você precisa ir para IntermediateBuildFilesPath / UninstalledProducts /. Lembra-se de quando lhe foi dito para definir Ignorar instalação como SIM para bibliotecas estáticas? Bem, este é o efeito que a configuração tem quando você faz um arquivo.
Nota lateral: Se você não configurar para pular a instalação, seus cabeçalhos serão colocados em outro local e o arquivo lib será copiado para seu arquivo, impedindo você de exportar um arquivo .ipa que você pode enviar para a App Store .
Depois de muita pesquisa, não consegui encontrar nenhuma macro que correspondesse exatamente à pasta UninstalledProducts, daí a necessidade de construir o caminho com "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts"
Resumo
Para sua biblioteca estática, certifique-se de pular a instalação e de que seus cabeçalhos públicos sejam colocados em $ TARGET_NAME.
Para seu aplicativo, defina os caminhos de pesquisa do cabeçalho do usuário como "$ (BUILT_PRODUCTS_DIR)", que funciona bem para compilações regulares, e "$ (BUILD_ROOT) /../ IntermediateBuildFilesPath / UninstalledProducts", que funciona para compilações de arquivo.