Czy mogę pisać natywne aplikacje na iPhone'a w Pythonie [zamknięte]

93

Używając PyObjC , możesz używać Pythona do pisania aplikacji Cocoa dla OS X. Czy mogę pisać natywne aplikacje na iPhone'a używając Pythona, a jeśli tak, to w jaki sposób?

davidmytton
źródło
36
Twórcy iPhone'a zgłaszają to pytanie jako nieaktualne (zbyt zlokalizowane), a próby rozwiązania tego problemu również powodują skargi, że nadal jest poprawne. Tak więc, jeśli jesteś tutaj w wyniku wyszukiwania, ostrzegaj, że ta odpowiedź pochodzi z 2008 roku i może nie mieć poprawnej odpowiedzi.
1
Aby dokładniej wyjaśnić: firma Apple miała kiedyś sekcję w umowie, w której wyszczególniono dopuszczalne języki programowania C, C ++, Objective-C i Javascript. To było powodem wielu zamieszania, wątpliwości i strachu. Ostatecznie Apple przestało nazywać języki. Wiem na pewno, że nawet wtedy, gdy to było na miejscu, różne aplikacje były w sklepie, były publikowane lub w fazie rozwoju, które w jakiś sposób korzystały ze skryptów Lua.
LearnCocos2D

Odpowiedzi:

37

Obecnie jedynymi dostępnymi językami w celu uzyskania dostępu do iPhone SDK są C / C ++, Objective C i Swift.

Nie ma żadnego technicznego powodu, dla którego nie miałoby się to zmienić w przyszłości, ale nie wstrzymałbym oddechu, ponieważ wydarzy się to w najbliższej przyszłości.

To powiedziawszy, Objective-C i Swift naprawdę nie są zbyt przerażające ...

Edycja 2016

Javascript ze strukturą NativeScript jest już dostępny.

Dave Verwer
źródło
32
Napisałem wielofunkcyjną aplikację na iPhone'a w Objective-C i wielofunkcyjną aplikację na Maca w PyObjC i muszę powiedzieć, że na podstawie doświadczenia składnia Objective-C w szczególności dla struktur danych (takich jak tablice i słowniki) jest znacznie bardziej uciążliwe i żmudne niż język Pythona. Zasadniczo odmówiłem dalszego rozwoju mojej aplikacji na iPhone'a, dopóki Apple nie zapewni wsparcia dla PyObjC. Stosunkowo rozwlekła i żmudna składnia Objective-C jest dla mnie niesamowicie rozpraszająca, kiedy próbuję opracować odgórny przepływ moich algorytmów.
Chris Redford
1
@Dave Verwer: czy ta odpowiedź jest nadal aktualna?
bukzor
5
@bukzor nope, patrz stackoverflow.com/questions/3691655/…
cobbal
2
@cobbal: W takim razie ten wątek jest dość mylący. Jaki jest właściwy sposób, aby go poprawić?
bukzor
5
@Max Czy użyłeś PyObjC do stworzenia aplikacji na Maca i porównałeś czytelność programów Apple napisanych w Pythonie z programami Apple napisanymi w Objective-C? Jeśli nie, nie masz podstaw do takiego osądu.
Chris Redford,
53

Możesz używać PyObjC również na iPhonie, dzięki doskonałej pracy Jaya Freemana (saurik). Zobacz Aplikacje na iPhone'a w Pythonie .

Zauważ, że w tej chwili wymaga to jailbreakowanego iPhone'a.

gavrie
źródło
24

Wygląda na to, że teraz jest to coś, co programiści mogą zrobić: Umowa dewelopera iOS została wczoraj zmieniona i wydaje się, że została poprawiona w taki sposób, aby osadzenie interpretera Pythona w aplikacji było legalne:

SEKCJA 3.3.2 - TŁUMACZE TŁUMACZE

Stary:

3.3.2 Aplikacja nie może samodzielnie instalować ani uruchamiać innego kodu wykonywalnego w jakikolwiek sposób, w tym bez ograniczeń za pomocą architektury wtyczek, wywoływania innych struktur, innych interfejsów API lub w inny sposób. O ile Apple nie wyrazi inaczej na piśmie, żaden zinterpretowany kod nie może być pobierany ani używany w Aplikacji, z wyjątkiem kodu, który jest interpretowany i uruchamiany przez udokumentowane interfejsy API firmy Apple i wbudowane interpretery. Niezależnie od powyższego, za uprzednią pisemną zgodą Apple, Aplikacja może używać osadzonego zinterpretowanego kodu w ograniczonym zakresie, jeśli takie użycie służy wyłącznie do dostarczania drugorzędnych funkcji lub funkcjonalności, które są zgodne z zamierzonym i reklamowanym celem Aplikacji.

Nowy:

3.3.2 Aplikacja nie może pobierać ani instalować kodu wykonywalnego. Kod interpretowany może być używany w Aplikacji tylko wtedy, gdy wszystkie skrypty, kod i interpretery są spakowane w Aplikacji i nie są pobierane. Jedynym wyjątkiem od powyższego są skrypty i kod pobierane i uruchamiane przez wbudowaną strukturę WebKit firmy Apple.

jkp
źródło
23

Tak, możesz. Piszesz swój kod w tinypy (który jest ograniczonym Pythonem), następnie używasz tinypy, aby przekonwertować go na C ++, a na koniec skompilować go za pomocą XCode do natywnej aplikacji na iPhone'a. Phil Hassey opublikował grę o nazwie Elephants! stosując to podejście. Oto więcej szczegółów,

http://www.philhassey.com/blog/2009/12/23/elephants-is-free-on-the-app-store/

Asim Jalis
źródło
21

Tak, obecnie możesz tworzyć aplikacje na iOS w Pythonie.

Istnieją dwa frameworki, które możesz chcieć sprawdzić : Kivy i PyMob .

Prosimy o rozważenie odpowiedzi na to pytanie , ponieważ są one bardziej aktualne niż to.

Filipe Correia
źródło
Kivy i PyMob nie generują natywnych aplikacji
Serjik
Zależy od twojej definicji „rodzimego”. Pytanie sugeruje definicję, która obejmuje pisanie aplikacji w języku Python na OSX, w pewnym stopniu w taki sam sposób, w jaki można je teraz pisać na iOS.
Filipe Correia
19

Aktualizacja Umowy programisty iOS oznacza, że ​​możesz używać tego, co chcesz, o ile spełniasz wytyczne dla programistów. Sekcja 3.3.1, która ogranicza możliwości programistów do tworzenia aplikacji na iOS, została całkowicie usunięta.

Źródło: http://daringfireball.net/2010/09/app_store_guidelines

Gordon Christie
źródło
2
Na szczęście ten język został usunięty z 3.3.1 !!
Dan McClain
4

Umowa iPhone SDK jest również dość niejasna, jeśli chodzi o to, czy możesz w ogóle uruchamiać języki skryptowe (poza JavaScriptem WebView). Czytam, że jest OK - o ile żaden ze skryptów, które wykonujesz, nie jest pobierany z sieci (więc preinstalowane i edytowane przez użytkownika skrypty wydają się być w porządku).

IANAL itp. Itp.

schwa
źródło
3

BeeWare to platforma open source do tworzenia natywnych aplikacji na systemy iOS i Android.

Michał
źródło
jest wciąż w fazie rozwoju i problematyczne
ikel
3

Aktualizacja 2019:

Podczas gdy programowanie w Python-iOS jest stosunkowo niedojrzałe i prawdopodobnie uniemożliwi (afaik) twoją aplikację posiadanie natywnego interfejsu użytkownika i funkcjonalności, które można osiągnąć w języku programistycznym obsługiwanym przez Apple, wydaje się, że Apple zezwala teraz na osadzanie interpreterów Pythona w Native Swift / Obj-C aplikacje.

Obsługuje to importowanie bibliotek Python i uruchamianie skryptów Python (nawet z dostarczonymi argumentami wiersza poleceń) bezpośrednio z kodu Native Swift / Obj-C.

Moja firma aktualnie pakuje naszą infrastrukturę (pierwotnie napisaną w Pythonie) w natywną aplikację na iOS! Działa bardzo dobrze, a komunikację między częściami można łatwo osiągnąć za pomocą modelu klient-serwer.

Oto fajna biblioteka Beeware z szablonem cookiecutter, jeśli chcesz wypróbować i uruchomić skrypty Python w swojej aplikacji na iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .

Rakeeb Hossain
źródło
1

Z technicznego punktu widzenia aplikacja może zostać zatwierdzona, o ile zinterpretowany kod nie zostanie pobrany (z wyłączeniem JavaScript). Platforma Rhomobiles „Rhodes” właśnie to robi, łącząc mobilny Ruby, lekką wersję Railsów i aplikację do dystrybucji za pośrednictwem sklepu z aplikacjami. Ponieważ zarówno interpreter, jak i zinterpretowany kod są pakowane do ostatecznej aplikacji - Apple nie uważa tego za niepożądane.

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

Nawet po najnowszym komunikacie prasowym Apple - aplikacje Rhodes (mobilny ruby) są nadal dostępne w sklepie z aplikacjami. Trudno mi uwierzyć, że tinyPy lub pyObjC nie znajdą miejsca, jeśli istnieje chętna społeczność programistów.

Michael McCracken
źródło
0

Możesz to zrobić za pomocą PyObjC, oczywiście z telefonem po jailbreaku. Ale jeśli chcesz, aby trafił do App Store, nie pozwolą na to, ponieważ „interpretuje kod”. Możesz jednak użyć Shed Skin , chociaż nie wiem, czy ktoś to robi. Nie mogę wymyślić żadnego dobrego powodu, aby to zrobić, ponieważ tracisz dynamiczne pisanie i równie dobrze możesz użyć ObjC.

Zifre
źródło
-1

Jedynym znaczącym „zewnętrznym” językiem programowania iPhone'a, o którym wiem, z częściowo znaczącym wsparciem w zakresie ram i kompatybilności, jest MonoTouch , środowisko C # / .NET do programowania na iPhone.

Mikrofon
źródło
Tak, ale z nową umową dewelopera iPhone'a musimy poczekać i zobaczyć, co stanie się z Mono Touch.
TalkingCode
1
@Holli: Nowa umowa deweloperska stawia MonoTouch na jasnym tle
Dan McClain
-1

Myślę, że wcześniej nie było to możliwe, ale niedawno usłyszałem o PyMob, co wydaje się interesujące, ponieważ aplikacje są napisane w Pythonie, a końcowe wyniki to natywne kody źródłowe na różnych platformach (Obj-C na iOS, Java na Androida itp.). Jest to z pewnością dość wyjątkowe. Ta strona internetowa wyjaśnia to bardziej szczegółowo.

Nie zrobiłem jeszcze tego zdjęcia, ale wkrótce się przyjrzę.

John M.
źródło
Najwyraźniej ma to zostać uruchomiony jako projekt komercyjny. Obecnie (28 września 12) na stronie jest napisane: „Przyjmujemy klientów do ograniczonego programu Beta. Prosimy o kontakt w celu uzyskania informacji” i to wszystko.
ccpizza