Você está definitivamente no caminho certo em relação ao arquivo .xcscheme - eu tive esse problema aparecendo ao configurar meus próprios projetos!
Para a posteridade, ou pelo menos para qualquer um que chegar aqui a partir de uma pesquisa, aqui estão duas versões das coisas - a versão "Estou ocupado, portanto, apenas os fatos, por favor" e uma discussão e lógica mais envolvidas. Ambas as versões assumem que você está tentando criar a partir de um arquivo do Workspace; se você não estiver, desculpe-me, pois isso se aplica principalmente a projetos baseados no espaço de trabalho.
Versão condensada 'Fix-it'
A causa raiz é que o comportamento padrão dos Esquemas é manter os esquemas "privados" até que sejam marcados especificamente como compartilhados. No caso de uma construção iniciada pela linha de comando, a interface do usuário do Xcode nunca é executada e a ferramenta xcoderun não possui seu próprio cache de esquemas para trabalhar. O objetivo é gerar, compartilhar e confirmar o esquema que você deseja que o Bamboo execute:
- Em uma cópia de trabalho limpa do código, abra o espaço de trabalho do seu Projeto.
- Escolha Esquema> Gerenciar esquemas ... no menu Produto.
- A lista de esquemas definidos para o projeto é exibida.
- Localize o esquema que o Bamboo está tentando executar
- Verifique se a caixa 'Compartilhado' está marcada para esse esquema e se a configuração 'Contêiner' está definida como Área de trabalho e não o próprio arquivo do projeto.
- Clique em 'OK' para descartar a folha Gerenciar esquemas.
- Um novo arquivo .xcscheme foi criado no seu projeto em WorkspaceName.xcworkspace / xcshareddata / xcschemes.
- Confirme esse arquivo no seu repositório e execute uma compilação Bamboo.
Discussão e justificativa mais profundas
O Xcode 4 introduziu os Espaços de trabalho e os esquemas como uma maneira de ajudar a domesticar parte do caos inerente a lidar com a mecânica da fiação de projetos relacionados ao Xcode, construir alvos e criar configurações juntos. O próprio espaço de trabalho possui seu próprio conjunto de dados de configuração que descreve cada uma das 'caixas' menores de dados que ele contém e atua como um esqueleto para anexar arquivos .xcodeproj e um conjunto de dados de configuração compartilhados que são espelhados para cada máquina de desenvolvedor ou sistema de IC . Esse é o poder e a armadilha dos Espaços de Trabalho - existem 1) várias maneiras pelas quais alguém pode configurar 100% corretamente, mas colocar no contêiner errado ou 2) colocar no contêiner correto, mas configurado incorretamente, renderizando dados inacessível por outras partes do sistema!
O comportamento padrão dos esquemas do Xcode 4 é gerar automaticamente novos esquemas à medida que os projetos são adicionados ao arquivo do Espaço de Trabalho. Aqueles de vocês que adicionaram vários arquivos .xcodeproj podem ter notado que sua lista de esquemas se torna rapidamente irregular, especialmente quando os arquivos do projeto são adicionados, removidos e depois lidos para o mesmo espaço de trabalho. Todos os esquemas, gerados automaticamente ou criados manualmente, passam a ser esquemas 'particulares' visíveis apenas para o usuário atual, mesmo quando os arquivos .xcuserdata são confirmados com os dados e a configuração do projeto. Essa é a causa raiz desse erro de construção enigmático que o Bamboo relata do xcodebuild - Como o Bamboo opera a construção por meio da linha de comando e não da interface do usuário do Xcode, ele não tem a oportunidade de os esquemas serem gerados automaticamente e depende apenas daqueles que são definidos no próprio espaço de trabalho.
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyApplication -configuration Debug
O xcodebuild procura o arquivo <'esquema' Valor do parâmetro> .xcscheme existente no <'espaço de trabalho' Valor do parâmetro> / xcshareddata / xcschemes.
Obviamente, existem várias maneiras pelas quais alguém pode configurar o Bamboo e um espaço de trabalho, portanto, lembre-se de que sua configuração exclusiva pode não mapear 100% para o que é apresentado aqui. Os principais tópicos:
- Certas tarefas automatizadas pelas quais a interface do usuário do Xcode cuida magicamente não estão disponíveis na CLI do Xcodebuild.
- Você pode anexar esquemas e criar dados de configuração a vários locais da 'hierarquia de contêineres' - verifique se os dados acabam no contêiner certo (espaço de trabalho, projeto e / ou destino de compilação)
- Considere onde na hierarquia de contêineres a ferramenta xcodebuild pode estar procurando dados de configuração; um ótimo indicador de onde ele começará a procurar é baseado no uso dos argumentos '-workspace' ou '-project'.
A caixa 'Compartilhada' já está marcada ... e agora?
Encontrei esse mesmo problema em minha própria instância do Bamboo; descobriu-se que o esquema confirmado no meu repositório estava desatualizado e a versão mais recente das ferramentas de linha de comando não estava lidando com isso normalmente. Como isso existia anteriormente, dei uma olhada nas configurações para garantir que não houvesse algo flagrantemente personalizado sobre o esquema, excluí e recriei o esquema, garantindo que eu o marquei como 'Compartilhado' e recomendo o novo arquivo .xcscheme para o repositório.
Se tudo parecer bom e a reconstrução não resolver o problema, verifique novamente a configuração do contêiner - é realmente fácil anexar esse esquema ao contêiner errado na hierarquia!