Xcode: O que é um destino e esquema em linguagem simples?
204
Sim, o título diz :-) O que eles significam na língua inglesa? Eu realmente não entendo a explicação no site da Apple e preciso renomear meu alvo e temo que nada funcione depois disso.
Área de trabalho - contém um ou mais projetos . Esses projetos geralmente se relacionam entre si
Projeto - Contém código e recursos, etc. (Você estará acostumado a isso!)
Alvo - Cada projeto possui um ou mais alvos.
Cada destino define uma lista de configurações de construção para esse projeto
Cada destino também define uma lista de classes, recursos, scripts personalizados etc para incluir / usar na construção.
As metas geralmente são usadas para diferentes distribuições do mesmo projeto.
Por exemplo, meu projeto tem dois destinos, uma compilação "normal" e uma compilação "office" que possui recursos de teste extras e pode conter várias faixas de música de fundo e um botão para alterar a faixa (como atualmente).
Você estará acostumado a adicionar classes e recursos ao seu destino padrão à medida que os adiciona.
Você pode escolher quais classes / recursos são adicionados a qual destino.
No meu exemplo, tenho uma classe "DebugHandler" adicionada à minha compilação de escritório
Se você adicionar testes, isso também adiciona um novo destino.
Esquema - Um esquema define o que acontece quando você pressiona "Build", "Test", "Profile" etc.
Geralmente, cada alvo tem pelo menos um esquema
Você pode criar esquemas automaticamente para seus destinos, indo em Esquema> Gerenciar esquemas e pressionando "Autocriar esquemas agora"
Vamos tentar se entendi corretamente ... Estou programando um aplicativo e fazendo dois alvos. Uma que carregarei na loja de aplicativos e outra na qual desenvolvo a próxima versão do mesmo aplicativo. E nos esquemas que faço, por exemplo, um esquema nos dois destinos a serem executados e um esquema para depuração? Mas por que preciso de esquemas diferentes para isso? Eu não entendi a vantagem disso de BJ Homer.
MichiZH
FWIW, eu não uso esquemas diferentes para liberação e depuração, a menos que eu esteja adicionando recursos extras de depuração, como descrevi na minha resposta.
James Webster
2
Soberba explicação mano! ! !
Sagar Kalathil
6
o que você quer dizer com a construção do seu escritório com um botão de música na parte inferior. Seu aplicativo atual possui um código extra que é ativado apenas na compilação do escritório ou a música é executada no seu mac. Desculpe eu estou confuso
3366784
Esse tipo de define o que as coisas compõem cada conceito, mas não o objetivo de cada item. Para mim, é sobre isso que o OP estava perguntando.
O'Rooney 26/03
66
Um destino é um produto final criado executando "build" no Xcode. Pode ser um aplicativo, uma estrutura, uma biblioteca estática ou um pacote de teste de unidade. Seja o que for, geralmente corresponde a um único item na pasta "produtos criados".
Um esquema representa uma coleção de destinos com os quais você trabalha juntos. Ele define quais destinos são usados quando você escolhe várias ações no Xcode (Execução, Teste, Perfil, etc.) Freqüentemente, você terá apenas um esquema, que usa o principal destino do aplicativo para as ações Executar, Arquivar e Perfil e um destino de teste de unidade para a ação Teste. Se você estava criando dois aplicativos relacionados, pode ter dois esquemas que usaram o mesmo pacote de teste de unidade, mas destinos de aplicativo diferentes.
O principal benefício dos esquemas (introduzidos no Xcode 4) é que eles permitem alternar entre executar o aplicativo e os testes de unidade sem precisar alternar o destino selecionado.
Sou uma pessoa visual, portanto, para explicar o conceito, usarei um diagrama.
Quando você tem vários destinos, eles podem ser combinados individualmente com as ações Executar, Teste, Perfil do Xcode, esse conceito define um esquema
Um alvo é uma versão do seu projeto , ou seja, os alvos diferem ligeiramente em classes e recursos a serem usados durante o tempo de construção. Um projeto pode ter várias configurações de tempo de construção para requisitos de distribuição separados.
Este diagrama parece errado. Um esquema deve estar vinculado a um alvo específico, não estou vendo onde em um esquema você pode ter vários alvos.
Boon
6
@Boon Não, descuidadamenteChoosy está correto. No editor de esquema, clique no item 'build' à esquerda. Na área direita, clique em '+' e você pode adicionar mais destinos a esse esquema. Marque as caixas conforme desejado. Os executáveis desses destinos estão disponíveis nas outras ações (Execução, Perfil, etc.) no menu suspenso executável.
Occulus
Isso é bom, mas está faltando a parte da configuração da compilação dos esquemas. Penso no esquema como uma coleção de como as ações (Executar, Teste, Perfil) correspondem a uma combinação de destinos e criam configurações (depuração, lançamento, qa, prod, etc.).
Steve Moser
3
Workspace( .xcworkspace) - é um contêiner de múltiplos projects. Foi criado como uma próxima etapa de cross-project references[Sobre]
Workspacecontém tudo schemesincluídoprojects
Workspacelida com todos implicit dependencies[Sobre]
Observações:
É seguro trabalhar com projetos diferentes dentro do mesmo workspacee não pegarCouldn't load Project.xcodeproj because it is already opened from another project or workspace
Project( .xcodeproj) - É um contêiner para targetse scheme. Ele define arquivos de código, recursos ...
Target- PBXNativeTargetseção. Define um conjunto específico de configurações de construção que geram:
Application target
Library and framework targets
Test
Aggregate[Sobre] . Por exemplo, é usado para criar umUniversal frameworkouUmbrella framework
Scheme- uma Project'sconfiguração para ação no Xcode: executar , testar , criar perfil , analisar e arquivar . Schemapode ser compartilhado, ajudando você no IC, Carthage... e localizado:
Dependency- Targetspode ter dependencies. Dependência é um link de origem contra. Essas dependências podem ser vinculadas estática ou dinamicamente [Sobre] Existem dois tipos delas:
Explicit Dependency[About] - Código fonte da dependência que está localizada no mesmo projeto ou projeto aninhado
Implicit Dependency[About] - Código fonte / fechado da dependência localizada no projeto que faz parte do mesmo espaço de trabalho.
Respostas:
Eu adicionei no Workspace e no Project também!
fonte
Um destino é um produto final criado executando "build" no Xcode. Pode ser um aplicativo, uma estrutura, uma biblioteca estática ou um pacote de teste de unidade. Seja o que for, geralmente corresponde a um único item na pasta "produtos criados".
Um esquema representa uma coleção de destinos com os quais você trabalha juntos. Ele define quais destinos são usados quando você escolhe várias ações no Xcode (Execução, Teste, Perfil, etc.) Freqüentemente, você terá apenas um esquema, que usa o principal destino do aplicativo para as ações Executar, Arquivar e Perfil e um destino de teste de unidade para a ação Teste. Se você estava criando dois aplicativos relacionados, pode ter dois esquemas que usaram o mesmo pacote de teste de unidade, mas destinos de aplicativo diferentes.
O principal benefício dos esquemas (introduzidos no Xcode 4) é que eles permitem alternar entre executar o aplicativo e os testes de unidade sem precisar alternar o destino selecionado.
fonte
Sou uma pessoa visual, portanto, para explicar o conceito, usarei um diagrama.
Quando você tem vários destinos, eles podem ser combinados individualmente com as ações Executar, Teste, Perfil do Xcode, esse conceito define um esquema
Um alvo é uma versão do seu projeto , ou seja, os alvos diferem ligeiramente em classes e recursos a serem usados durante o tempo de construção. Um projeto pode ter várias configurações de tempo de construção para requisitos de distribuição separados.
fonte
Workspace
(.xcworkspace
) - é um contêiner de múltiplosprojects
. Foi criado como uma próxima etapa decross-project references
[Sobre]Workspace
contém tudoschemes
incluídoprojects
Workspace
lida com todosimplicit dependencies
[Sobre]Observações:
workspace
e não pegarCouldn't load Project.xcodeproj because it is already opened from another project or workspace
Cocoapods
[Sobre] trabalhando comworkspace
onde criaPods
projetoProject
(.xcodeproj
) - É um contêiner paratargets
escheme
. Ele define arquivos de código, recursos ...Target
-PBXNativeTarget
seção. Define um conjunto específico de configurações de construção que geram:Application target
Library and framework targets
Test
Aggregate
[Sobre] . Por exemplo, é usado para criar umUniversal framework
ouUmbrella framework
Scheme
- umaProject's
configuração para ação no Xcode: executar , testar , criar perfil , analisar e arquivar .Schema
pode ser compartilhado, ajudando você no IC,Carthage
... e localizado:Dependency
-Targets
pode terdependencies
. Dependência é um link de origem contra. Essas dependências podem ser vinculadas estática ou dinamicamente [Sobre] Existem dois tipos delas:Explicit Dependency
[About] - Código fonte da dependência que está localizada no mesmo projeto ou projeto aninhadoImplicit Dependency
[About] - Código fonte / fechado da dependência localizada no projeto que faz parte do mesmo espaço de trabalho.[Vocabulário]
fonte