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?


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.


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


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,


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.



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.


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



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.



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 .


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.


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.


-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.


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ę.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.