Como construir um framework ou biblioteca para outros desenvolvedores, de forma segura? [fechadas]

106

Temos uma ideia para uma estrutura ou biblioteca que será muito útil para qualquer desenvolvedor iOS. Portanto, estamos pensando seriamente em mudar do desenvolvimento de aplicativos para o desenvolvimento de framework / biblioteca.

Mas quando queremos cobrar pela biblioteca / estrutura, devemos proteger o código de alguma forma. Como podemos construir um framework de tal forma que o usuário do nosso framework não possa ver o código-fonte, da mesma forma que não podemos ver o código-fonte dos frameworks Apples? Eles enviam apenas os arquivos de cabeçalho e alguns arquivos exe Unix estranhos com a estrutura compilada, eu acho.

Ou se não for possível fazer uma estrutura / biblioteca compilada que outros desenvolvedores iOS possam usar sem serem capazes de copiar e colar nossos códigos-fonte, então há uma maneira de ofuscar o código objetivo-c?

Membro Orgulhoso
fonte
22
Arquivo exe Unix :-)
Besi
6
Se você realmente deseja ser útil para os desenvolvedores iOS, abra o código-fonte!
Kaan Dedeoglu
4
@KaanDedeoglu - Existem prós e contras para os usuários em ambos os cenários. Pessoalmente, eu prefiro um código fechado com preços razoáveis, tudo é bem documentado, com suporte e funciona apenas com um framework de código aberto, sem suporte e não documentado. Raro é a estrutura de código aberto que, na verdade, é bem documentada E mantida ativamente.
ArtOfWarfare

Respostas:

113

Sim, é possível construir frameworks de forma que o usuário do framework não possa ver o código-fonte.

Confira estes artigos (usei com sucesso o primeiro para criar estruturas no passado - os artigos posteriores são atualizações do original):

http://www.drobnik.com/touch/2010/04/making-your-own-iphone-frameworks/

http://www.drobnik.com/touch/2010/05/making-your-own-iphone-frameworks-in-xcode/

http://www.drobnik.com/touch/2010/10/embedding-binary-resources/

Para usar a estrutura, seus usuários simplesmente arrastariam o pacote .framework para o Xcode. Eles serão capazes de ver os arquivos de cabeçalho que você copiou para o pacote (veja os artigos acima), mas não a fonte (já que não está incluída - apenas a saída compilada está no pacote).

Essa também pode ser uma ótima maneira de distribuir o código usado para vários projetos em sua empresa.


Atualizar:

Confira o link sem penas adicionado abaixo - é muito mais recente e tudo em uma página: http://github.com/jverkoey/iOS-Framework . Ele também apresenta os problemas com várias outras abordagens. Este é o guia que sigo agora quando tento me lembrar do que fazer ao configurar uma nova estrutura. :)

Update2 (com versão Xcode 6)

Existe uma opção, exatamente que você está procurando Universal Framework for iOS:!

Meu código ficará visível para outras pessoas? R: Não. Este Framework exportará um binário compilado, para que qualquer pessoa possa ver dentro dele. Você pode fazer o mesmo para alguns outros arquivos, como XIBs.

Por que preciso disso? R: Isso é para desenvolvedores / equipes que desejam compartilhar seus códigos sem mostrar o código inteiro (arquivos .m / .c / .cpp). Além disso, é para quem deseja organizar código compilado + recursos (imagens, vídeos, sons, XIBs, plist, etc) em um único lugar. E isso também é para aquelas equipes que querem trabalhar juntas acima da mesma base (framework).

(c) http://blog.db-in.com/universal-framework-for-ios/

Jay Peyer
fonte
1
Obrigado cara! A Apple não rejeitará um aplicativo por causa desse truque? Você realmente conseguiu um aplicativo aprovado na App Store que usava tal estrutura?
Membro orgulhoso,
3
Só para voltar a isso, a partir do Xcode 4 -all_load linker flag na configuração de compilação "Other Linker Flags" não é necessário. -ObjC é a única bandeira de que você precisa.
Daniel
Você está certo Daniel, uma das versões mais recentes do LLVM / Clang corrigiu isso. Obrigado!
Jay Peyer
Adorei o link do github para o iOS Framework, +1
sbonami
Observação: se você tiver o Xcode 4.5, precisará de uma pequena modificação no tutorial, conforme documentado aqui: stackoverflow.com/questions/13571080/…
Lolo
9

Também existe um modelo para o XCode 4 que permite criar projetos de estrutura estática iOS.

Greg
fonte
você conhece projetos que foram lançados com este método?
Tomen
Não, eu não. Estou trabalhando em um que estamos pensando em lançar desta forma, mas não tenho certeza se é isso que vamos usar no final.
Greg