Pergunta

Em meu aplicativo, eu tenho atualmente todo o meu código separado em uma biblioteca estática, para torná-lo mais fácil de configurar as metas de projeto Xcode para o aplicativo atual e para testes de unidade para o meu código. O problema com isso é que eu quero colocar a maioria dos meus arquivos xib na biblioteca estática, bem como, mas parece que quando eu executar o meu aplicativo e tentar fazer referência a xib não pode encontrá-lo a menos que seja incluído no real -alvo do aplicativo, em vez do alvo biblioteca estática. É possível ter arquivos xib e outros recursos incluídos em bibliotecas estáticas que podem ser referenciados pelo código na mesma biblioteca, e se sim, como?

Foi útil?

Solução

Não, não é possível, porque uma biblioteca estática não é o mesmo como um "pacote".

Um pacote é um diretório que pode conter todos os tipos de arquivos, incluindo arquivos de recursos (xib), arquivos executáveis ??e bibliotecas estáticas. Ela existe no sistema de arquivos como um grupo de arquivos individuais.

A biblioteca estática é um único arquivo que contém classes, código e variáveis ??que foram ligados entre si pelo criador biblioteca. Ele não "contêm" outros arquivos, é essencialmente um banco de dados de código compilado.

Apesar de que seria possível colocar os dados para os XIBs lá, Xcode não teria nenhuma maneira de saber que ele estava lá, como ele procura-los como arquivos individuais no sistema de arquivos.

No Mac OS, você pode criar um "quadro" que é essencialmente um pacote de código, recursos, configurações etc que pode ser reutilizado por vários projetos. No entanto, a Apple não parece apoiar a criação de quadro personalizado para iPhone OS.

Pacotes https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

bibliotecas estáticas http://en.wikipedia.org/wiki/Static_library

Outras dicas

Responder a este comentário (não vai caber na caixa de comentário)

Não se preocupe, eu tenho tentado fazer praticamente a mesma coisa que você para a última semana - Eu gostaria de enviar uma "estrutura" de XIBs, incluir arquivos e .a libs para um cliente sem lhes dar todo o código fonte. Eu não poderia encontrar uma boa maneira de fazer isso com pacotes também.

Por alguma razão, a Apple está sendo particularmente obtuso sobre isso -. Eu não posso ver uma razão para que eles sejam assim no caso de bibliotecas estáticos (bibliotecas dinâmicas bastante justo)

A minha solução para agora é criar manualmente uma pasta pacote "Foo" que contém as seguintes subpastas:

  1. "incluir" -> colocar os arquivos .h aqui
  2. "res" -> colocar .xib arquivos aqui
  3. "lib" -> contém "iPhoneOS" e subpastas "iphonesimulator" cada um com libfoo.a

Em seguida, zip isso e enviar para o cliente. O cliente então:

  1. descompacta o pacote, onde quer que eles gostam.
  2. Adiciona a pasta "res" sob o grupo de recursos.
  3. Altera as seguintes configurações de destino:
    Outras Bandeiras Linker = -ObjC -lfoo
    Cabeçalho caminhos de busca = / incluem
    Biblioteca caminhos de busca = / lib / $ (PLATFORM_NAME)

Eu provavelmente pode automatizar a criação do pacote com algumas etapas de construção no meu final, mas o cliente é preso com quatro passos um pouco complicados para se configurar.

Eu encontrei uma solução perfeita para isso que faz todo o acima automaticamente e muito mais https://github.com/kstenerud/iOS-Universal-Framework Seu um xCode plug-in

Ela trabalhou para mim como um encanto, Ele funciona apenas para Xcode 4 e acima

Sim, você pode. adicionar um arquivo xib em sua biblioteca, como você faria para qualquer projeto normal. Então, em alvo projeto de biblioteca de adicionar o arquivo xib na seção Arquivos de cópia juntamente com .a arquivo. Em seu projeto principal, onde você estiver usando a biblioteca, arraste e solte o arquivo xib onde .a arquivo de biblioteca está localizada.

Ao distribuir você também pode criar um SDK. JSON.framework fez isso em sua SVN, e eu replicado com sucesso esta. Você pode ver como isso foi feito em http://hltypes.svn.sf.net/ em o hltypes-ios.xcodeproj ea pasta iOS no projeto.

Primeiramente você precisa "instalar" em sua pasta de compilação, e então você precisa copiar o SDKSettings.plist especialmente formatado. Em seguida, adicione o caminho para o SDK na lista "SDKs adicionais" no projeto do aplicativo. Desvantagem de SDKs compostos são a necessidade de reiniciar 3.x Xcode sempre que este mini-SDK é atualizado, e a insistência de Xcode em construir um SDK composto criado a partir SDK de base da Apple e seu mini-SDK (o que significa que você precisa esperar um pouco) .

projeto de aplicativo ainda precisa ter .xib e outros recursos adicionados manualmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top