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?
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?
Odpowiedzi:
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.
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.
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.
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/
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.
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
Pythonista ma funkcję eksportu do Xcode, która umożliwia eksportowanie skryptów Pythona jako projektów Xcode, które tworzą samodzielne aplikacje iOS.
Warto również przyjrzeć się https://github.com/ColdGrub1384/Pyto .
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.
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 .
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.
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.
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.
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ę.