Posso scrivere app native per iPhone utilizzando Python [chiuso]


91

Usando PyObjC , puoi usare Python per scrivere applicazioni Cocoa per OS X. Posso scrivere app native per iPhone usando Python e se sì, come?


36
Gli sviluppatori di iPhone stanno segnalando questa domanda come obsoleta (troppo localizzata) e i tentativi di risolverlo stanno anche sollevando lamentele sul fatto che sia ancora corretta. Quindi, se sei qui come risultato di una ricerca, tieni presente che questa risposta è del '08 e potrebbe non avere una risposta corretta.

1
Per spiegare ulteriormente: Apple una volta aveva una sezione nel loro accordo che elencava specificamente i linguaggi di programmazione consentiti C, C ++, Objective-C e Javascript. Questo è stato motivo di molta confusione, dubbi e paura. Alla fine Apple ha smesso di nominare le lingue. So per certo che anche mentre questo era in atto, una varietà di app erano nello store, in fase di pubblicazione o in fase di sviluppo che utilizzavano lo scripting Lua in un modo o nell'altro.
LearnCocos2D

Risposte:


37

Non attualmente, attualmente le uniche lingue disponibili per accedere all'SDK di iPhone sono C / C ++, Objective C e Swift.

Non vi è alcun motivo tecnico per cui questo non possa cambiare in futuro, ma non tratterrei il fiato perché questo accada a breve termine.

Detto questo, Objective-C e Swift non fanno davvero paura ...

2016 modifica

Javascript con il framework NativeScript è ora disponibile per l'uso.


32
Ho scritto un'app per iPhone multi-funzionalità in Objective-C e un'app per Mac multi-funzionalità in PyObjC e devo dire che, in base all'esperienza, la sintassi di Objective-C per le strutture di dati in particolare (come array e dizionari) è significativamente più ingombrante e noioso di Python. In pratica mi sono rifiutato di fare ulteriori sviluppi sulla mia app per iPhone fino a quando Apple non includerà il supporto per PyObjC. La sintassi relativamente prolissa e noiosa di Objective-C mi distrae incredibilmente quando cerco di sviluppare il flusso top-down dei miei algoritmi.
Chris Redford

1
@ Dave Verwer: questa risposta è ancora aggiornata?
bukzor


2
@ cobbal: Allora questo thread è piuttosto fuorviante .. Qual è il modo corretto per farlo correggere?
bukzor

5
@Max Hai usato PyObjC per creare un'applicazione Mac e quindi hai confrontato la leggibilità tra i programmi Apple scritti in Python con i programmi Apple scritti in Objective-C? In caso contrario, non hai una base per quel giudizio.
Chris Redford


24

Sembra che ora questo sia qualcosa che gli sviluppatori possono fare: il Contratto per gli sviluppatori iOS è stato modificato ieri e sembra essere stato modificato in modo tale da rendere legale l'incorporamento di un interprete Python nella tua applicazione:

SEZIONE 3.3.2 - INTERPRETI

Vecchio:

3.3.2 Un'Applicazione non può installare o lanciare altro codice eseguibile in alcun modo, incluso, senza limitazione, l'uso di un'architettura plug-in, chiamando altri framework, altre API o altro. Salvo diversa approvazione scritta da parte di Apple, nessun codice interpretato può essere scaricato o utilizzato in un'Applicazione ad eccezione del codice interpretato ed eseguito dalle API documentate di Apple e dagli interpreti incorporati. Nonostante quanto sopra, con il previo consenso scritto di Apple, un'Applicazione può utilizzare il codice interpretato incorporato in modo limitato se tale utilizzo è esclusivamente per fornire caratteristiche o funzionalità minori che sono coerenti con lo scopo previsto e pubblicizzato dell'Applicazione.

Nuovo:

3.3.2 Un'applicazione non può scaricare o installare codice eseguibile. Il codice interpretato può essere utilizzato in un'Applicazione solo se tutti gli script, il codice e gli interpreti sono presenti nell'Applicazione e non vengono scaricati. L'unica eccezione a quanto precede sono gli script e il codice scaricati ed eseguiti dal framework WebKit integrato di Apple.



21

Sì, al giorno d'oggi puoi sviluppare app per iOS in Python.

Ci sono due framework che potresti voler controllare: Kivy e PyMob .

Si prega di considerare anche le risposte a questa domanda , poiché sono più aggiornate di questa.


Kivy e PyMob non generano app native
Serjik

Dipende dalla tua definizione di "nativo". La domanda implica una definizione che copre la scrittura di applicazioni python per OSX, in una certa misura nello stesso modo in cui ora puoi scriverle per iOS.
Filipe Correia

19

Un aggiornamento al Contratto per gli sviluppatori iOS significa che puoi usare quello che vuoi, purché tu soddisfi le linee guida per gli sviluppatori. La sezione 3.3.1, che limitava ciò che gli sviluppatori potevano utilizzare per lo sviluppo iOS, è stata completamente rimossa.

Fonte: http://daringfireball.net/2010/09/app_store_guidelines


2
Per fortuna, questa lingua è stata rimossa dalla 3.3.1 !!
Dan McClain,


4

L'accordo sull'SDK per iPhone è anche piuttosto vago sul fatto che ti sia permesso di eseguire linguaggi di scripting (al di fuori del Javascript di WebView). La mia lettura è che è OK, a condizione che nessuno degli script che esegui venga scaricato dalla rete (quindi gli script preinstallati e modificati dall'utente sembrano essere OK).

IANAL ecc ecc.


3

BeeWare è un framework open source per la creazione di app iOS e Android native.


è ancora in fase di sviluppo e problematico
ikel

3

Aggiornamento 2019:

Sebbene lo sviluppo di Python-iOS sia relativamente immaturo e probabilmente impedirà (afaik) alla tua app di avere un'interfaccia utente nativa e funzionalità che potrebbero essere ottenute in un linguaggio di sviluppo supportato da Apple, Apple sembra ora consentire l'incorporamento di interpreti Python in Native Swift / Obj-C app.

Supporta l'importazione di librerie Python e l'esecuzione di script Python (anche con argomenti della riga di comando forniti) direttamente dal codice Swift / Obj-C nativo.

La mia azienda sta attualmente avvolgendo la nostra infrastruttura (originariamente scritta in Python) in un'applicazione iOS nativa! Funziona molto bene e la comunicazione tra le parti può essere facilmente ottenuta tramite un modello client-server.

Ecco una bella libreria di Beeware con un modello di cookiecutter se vuoi provare ad eseguire script Python nella tua app iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .


1

Tecnicamente, finché il codice interpretato NON viene scaricato (escluso JavaScript), l'app potrebbe essere approvata. Il framework "Rhodes" di Rhomobiles fa proprio questo, raggruppando Ruby mobile, una versione leggera di Rails e la tua app per la distribuzione tramite l'app store. Poiché sia ​​l'interprete che il codice interpretato sono impacchettati nell'applicazione finale, Apple non lo trova discutibile.

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

Anche dopo l'ultimo comunicato stampa di Apple, le app di rodi (mobile ruby) sono ancora utilizzabili sull'app store. Troverei difficile credere che tinyPy o pyObjC non troverebbero un posto se ci fosse una comunità di sviluppatori disponibile.


0

Puoi farlo con PyObjC, ovviamente con un telefono jailbroken. Ma se vuoi scaricarlo nell'App Store, non lo permetteranno perché "interpreta il codice". Tuttavia, potresti essere in grado di utilizzare Shed Skin , anche se non sono a conoscenza di nessuno che lo faccia. Non riesco a pensare a nessuna buona ragione per farlo, poiché perdi la digitazione dinamica e potresti anche usare ObjC.


-1

L'unico linguaggio "esterno" significativo per lo sviluppo di iPhone di cui sono a conoscenza con un supporto semi-significativo in termini di framework e compatibilità è MonoTouch , un ambiente C # /. NET per lo sviluppo su iPhone.


Sì, ma con il nuovo contratto di sviluppo per iPhone dobbiamo aspettare e vedere cosa ne sarà di Mono Touch.
TalkingCode

1
@Holli: Il nuovo accordo per gli sviluppatori mette in chiaro MonoTouch
Dan McClain,

-1

Penso che non sia stato possibile prima ma di recente ho sentito parlare di PyMob, che sembra interessante perché le app sono scritte in Python e gli output finali sono codici sorgente nativi in ​​varie piattaforme (Obj-C per iOS, Java per Android ecc.). Questo è certamente abbastanza unico. Questa pagina web lo spiega in modo più dettagliato.

Non ho ancora provato, ma darò un'occhiata presto.


Apparentemente questo verrà lanciato come progetto commerciale. A partire da ora (28-set-12) il sito dice: "Accettiamo clienti per un programma Beta limitato. Contattaci per richiedere informazioni" e basta.
ccpizza
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.