Posso escrever aplicativos nativos para iPhone usando Python [fechado]


91

Usando PyObjC , você pode usar Python para escrever aplicativos Cocoa para OS X. Posso escrever aplicativos nativos para iPhone usando Python e, em caso afirmativo, como?


36
Os desenvolvedores do iPhone estão sinalizando esta questão como desatualizada (muito localizada) e as tentativas de resolver isso também estão gerando reclamações de que ela ainda está correta. Portanto, se você está aqui devido a uma pesquisa, esteja avisado que esta resposta é de '08 e pode não ter uma resposta correta.

1
Para explicar melhor: a Apple certa vez tinha uma seção em seu contrato que listava especificamente as linguagens de programação permitidas C, C ++, Objective-C e Javascript. Isso foi motivo de muita confusão, dúvidas e medo. Eventualmente, a Apple parou de nomear os idiomas. Eu sei com certeza que, mesmo enquanto isso estava em vigor, uma variedade de aplicativos estavam na loja, sendo publicados ou em desenvolvimento que usavam o script Lua de uma forma ou de outra.
LearnCocos2D

Respostas:


37

Atualmente não, atualmente as únicas linguagens disponíveis para acessar o iPhone SDK são C / C ++, Objective C e Swift.

Não há nenhuma razão técnica para que isso não possa mudar no futuro, mas eu não prenderia sua respiração para que isso acontecesse a curto prazo.

Dito isso, Objective-C e Swift realmente não são tão assustadores ...

Edição de 2016

Javascript com estrutura NativeScript está disponível para uso agora.


32
Eu escrevi um aplicativo para iPhone com vários recursos em Objective-C e um aplicativo para Mac com vários recursos em PyObjC, e devo dizer que, com base na experiência, a sintaxe do Objective-C para estruturas de dados em particular (como arrays e dicionários) é significativamente mais enfadonho e tedioso do que o do Python. Basicamente, recusei-me a desenvolver mais meu aplicativo para iPhone até que a Apple incluísse suporte para PyObjC. A sintaxe comparativamente prolixa e entediante de Objective-C é incrivelmente perturbadora para mim quando estou tentando desenvolver o fluxo de cima para baixo de meus algoritmos.
Chris Redford

1
@Dave Verwer: esta resposta ainda está atualizada?
bukzor


2
@cobbal: Então este tópico é bastante enganador. Qual é a maneira correta de fazer para que seja corrigido?
bukzor

5
@Max Você usou o PyObjC para criar um aplicativo Mac e, portanto, comparou a legibilidade entre os programas Apple escritos em Python com os programas Apple escritos em Objective-C? Se não, você não tem uma base para esse julgamento.
Chris Redford


24

Parece que agora isso é algo que os desenvolvedores têm permissão para fazer: o Contrato de Desenvolvedor iOS foi alterado ontem e parece ter sido alterado de forma a tornar legal a incorporação de um interpretador Python em seu aplicativo:

SEÇÃO 3.3.2 - INTERPRETADORES

Velho:

3.3.2 Um Aplicativo não pode instalar ou iniciar outro código executável por qualquer meio, incluindo, sem limitação, por meio do uso de uma arquitetura de plug-in, chamando outras estruturas, outras APIs ou de outra forma. A menos que seja aprovado de outra forma pela Apple por escrito, nenhum código interpretado pode ser baixado ou usado em um Aplicativo, exceto para código que é interpretado e executado pelas APIs Documentadas da Apple e intérprete (s) integrado (s). Não obstante o acima exposto, com o consentimento prévio por escrito da Apple, um Aplicativo pode usar código interpretado incorporado de forma limitada se tal uso for exclusivamente para fornecer recursos ou funcionalidades menores que sejam consistentes com o propósito pretendido e anunciado do Aplicativo.

Novo:

3.3.2 Um Aplicativo não pode baixar ou instalar código executável. O código interpretado só pode ser usado em um aplicativo se todos os scripts, códigos e interpretadores estiverem empacotados no aplicativo e não forem baixados. A única exceção ao anterior são os scripts e códigos baixados e executados pela estrutura WebKit embutida da Apple.



21

Sim, hoje você pode desenvolver aplicativos para iOS em Python.

Existem duas estruturas que você pode querer verificar: Kivy e PyMob .

Considere também as respostas a esta pergunta , pois estão mais atualizadas do que esta.


Kivy e PyMob não geram aplicativos nativos
Serjik

Depende da sua definição de "nativo". A questão implica em uma definição que cobre a escrita de aplicativos python para OSX, até certo ponto da mesma forma que agora você pode escrevê-los para iOS.
Filipe Correia



4

O acordo do iPhone SDK também é um tanto vago sobre se você tem permissão para executar linguagens de script (fora do Javascript de um WebView). Minha leitura é que está tudo bem - desde que nenhum dos scripts que você executa seja baixado da rede (portanto, os scripts pré-instalados e editados pelo usuário parecem estar OK).

IANAL etc etc.


3

BeeWare é uma estrutura de código aberto para a criação de aplicativos nativos iOS e Android.


ainda está em desenvolvimento e problemático
ikel

3

Atualização de 2019:

Embora o desenvolvimento Python-iOS seja relativamente imaturo e provavelmente impedirá (afaik) que seu aplicativo tenha IU nativa e funcionalidade que poderia ser alcançada em uma linguagem de desenvolvimento suportada pela Apple, a Apple agora parece permitir a incorporação de interpretadores Python em Native Swift / Obj-C aplicativos.

Isso suporta a importação de bibliotecas Python e a execução de scripts Python (mesmo com argumentos de linha de comando fornecidos) diretamente de seu código Swift / Obj-C nativo.

Minha empresa está realmente envolvendo nossa infraestrutura (originalmente escrita em Python) em um aplicativo iOS nativo! Funciona muito bem e a comunicação entre as partes pode ser facilmente alcançada através de um modelo cliente-servidor.

Aqui está uma ótima biblioteca da Beeware com um modelo cookiecutter se você deseja tentar e executar scripts Python em seu aplicativo iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .


1

Tecnicamente, desde que o código interpretado NÃO seja baixado (excluindo JavaScript), o aplicativo pode ser aprovado. O framework Rhomobiles "Rhodes" faz exatamente isso, agrupando Ruby móvel, uma versão leve do Rails e seu aplicativo para distribuição através da app-store. Como tanto o interpretador quanto o código interpretado são empacotados no aplicativo final - a Apple não acha isso questionável.

http://rhomobile.com/products/rhodes/

Mesmo após o último comunicado de imprensa da apple - aplicativos rhodes (rubi móvel) ainda são viáveis ​​na app-store. Acho difícil acreditar que tinyPy ou pyObjC não encontraria um lugar se houvesse uma comunidade de desenvolvedores disposta.


0

Você pode fazer isso com o PyObjC, com um telefone desbloqueado, é claro. Mas se você quiser colocá-lo na App Store, eles não permitirão porque ele "interpreta o código". No entanto, você pode usar o Shed Skin , embora eu não saiba de ninguém fazendo isso. Não consigo pensar em nenhuma boa razão para fazer isso, pois você perde a digitação dinâmica e pode usar ObjC.


-1

A única linguagem "externa" significativa para o desenvolvimento do iPhone que conheço com suporte semi-significativo em termos de frameworks e compatibilidade é o MonoTouch , um ambiente C # / .net para desenvolvimento no iPhone.


Sim, mas com o novo contrato de desenvolvedor do iPhone, devemos esperar e ver o que acontecerá com o Mono Touch.
TalkingCode

1
@Holli: O agora novo contrato de desenvolvimento coloca a MonoTouch em claro
Dan McClain

-1

Acho que não foi possível antes, mas recentemente ouvi falar do PyMob, o que parece interessante porque os aplicativos são escritos em Python e as saídas finais são códigos-fonte nativos em várias plataformas (Obj-C para iOS, Java para Android etc). Isso é certamente único. este página da web explica isso com mais detalhes.

Eu não tentei ainda, mas vou dar uma olhada em breve.


Aparentemente, isso vai ser lançado como um projeto comercial. A partir de agora (28-Set-12) o site diz: "Estamos aceitando clientes para um programa Beta limitado. Entre em contato conosco para saber" e é isso.
ccpizza
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.