Vou carregar meu primeiro aplicativo mac para a Apple Store
E corrigiu todos os bugs de validação de ícone, categoria ...
Mas, depois disso, passei na validação com aviso:
The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message.
E meu upload será rejeitado com o motivo: "Binário inválido"
Alguém tem experiência desse caso?
ATUALIZAÇÃO: este aviso não é o motivo da rejeição, talvez seja o problema de arquivamento do aplicativo. Lancei com sucesso meu aplicativo para armazenar.
Portanto, podemos ignorar isso com segurança.
Respostas:
A Apple proíbe o uso de APIs privadas ou não documentadas em aplicativos iOS. Todas as chamadas que você fizer para métodos que têm o mesmo nome de métodos de API privados ou não documentados serão sinalizadas como um uso de API privado, mesmo se o método que está sendo chamado for algo que você mesmo definiu.
O App Loader faz uma varredura inicial, verificando nomes de métodos, acesso a variáveis de instância e até mesmo o uso de @selector com nomes de métodos privados. O App Loader nem sempre faz um ótimo trabalho, e quanto mais arquivos de origem você tem, mais provável é que ele avise que o arquivo de análise de API gerado por ele é "muito grande".
Felizmente, você ainda pode enviar sua inscrição, apesar do aviso. A Apple verificará internamente e, se algo for interrompido por causa da sobreposição de nomes, você terá que passar pelo processo de revisão novamente.
Erika Sadun tentou fazer um aplicativo chamado API Kit que faria a digitalização para você, mas ela parece ter abandonado o trabalho e removido qualquer vestígio do aplicativo de seu site.
A Chimp Studios criou o App Scanner para fazer a mesma coisa, mas não foi atualizado desde 2011. Infelizmente, para grandes projetos - e isso inclui projetos com muitos pods extras de CocoaPods - não há nenhum (2014) bom atual Uma maneira de resolver esse problema diferente de nomear as coisas de forma proativa de forma que não entrem em conflito com o método privado da API e os nomes das instâncias.
Você pode aprender proativamente sobre as convenções de nomenclatura de cacau da Apple e tentar se antecipar. Isso reduzirá as dores de cabeça futuras. Até que a Apple introduza algo como namespaces, no entanto, podemos continuar enfrentando esse problema de vez em quando.
O erro "binário inválido" pode ter várias causas, mas não está totalmente relacionado ao documento de análise da API criado pelo App Loader.
Você deve saber que, mesmo com a varredura, ainda há maneiras de contornar a proibição de uso de APIs privadas / não documentadas. :)
fonte
Depois de encontrar esse problema pela primeira vez no meu primeiro projeto Swift, parece que a resposta mais comum para essa pergunta é agora:
Se você usar o Swift 2.xe XCode 7, receberá este erro. Ignore isso.
[ATUALIZAÇÃO: o lançamento do XCode 7.3 e iOS 9.3 parece ter corrigido esse problema!]
fonte
Aqui está uma maneira fácil de contorná-los ... armazene o nome do seletor ao contrário, como "dlroWolleH" e, em seguida, inverta a string antes de chamar o método.
Se a Apple souber disso, você poderá criptografá-los.
fonte