Могу ли я писать собственные приложения для iPhone с помощью Python [закрыто]

93

Используя PyObjC , вы можете использовать Python для написания приложений Cocoa для OS X. Могу ли я писать собственные приложения для iPhone с помощью Python, и если да, то как?

Дэвидмиттон
источник
36
Разработчики iPhone отмечают, что этот вопрос устарел (слишком локализован), и попытки решить его также вызывают жалобы на то, что он все еще верен. Итак, если вы оказались здесь в результате поиска, имейте в виду, что этот ответ относится к '08 и может не иметь правильного ответа.
1
Для дальнейшего объяснения: у Apple однажды был раздел в их соглашении, в котором конкретно перечислялись допустимые языки программирования C, C ++, Objective-C и Javascript. Это было поводом для замешательства, сомнений и опасений. В конце концов Apple перестала называть языки. Я точно знаю, что даже в то время, когда это было, в магазине, публиковались или разрабатывались различные приложения, которые так или иначе использовали сценарии Lua.
LearnCocos2D

Ответы:

37

В настоящее время нет, в настоящее время единственными языками, доступными для доступа к iPhone SDK, являются C / C ++, Objective C и Swift.

Нет никаких технических причин, по которым это не может измениться в будущем, но я бы не стал задерживать дыхание из-за того, что это произойдет в краткосрочной перспективе.

Тем не менее, Objective-C и Swift действительно не так уж и страшны ...

2016 править

Javascript с фреймворком NativeScript теперь доступен для использования.

Дэйв Вервер
источник
32
Я написал многофункциональное приложение для iPhone на Objective-C и многофункциональное приложение для Mac на PyObjC, и я должен сказать, что, исходя из своего опыта, синтаксис Objective-C, в частности, для структур данных (таких как массивы и словари) значительно более громоздкий и утомительный, чем Python. Я практически отказался от дальнейшей разработки своего приложения для iPhone, пока Apple не включит поддержку PyObjC. Сравнительно многословный и утомительный синтаксис Objective-C невероятно отвлекает меня, когда я пытаюсь разработать нисходящий поток моих алгоритмов.
Крис Редфорд,
1
@ Дэйв Вервер: этот ответ все еще актуален?
букзор
5
@bukzor нет, см. stackoverflow.com/questions/3691655/…
cobbal
2
@cobbal: Тогда эта ветка вводит в заблуждение .. Как правильно ее исправить?
букзор
5
@Max Вы использовали PyObjC для создания приложения Mac и, следовательно, сравнивали удобочитаемость программ Apple, написанных на Python, с программами Apple, написанными на Objective-C? В противном случае у вас нет оснований для такого суждения.
Крис Редфорд,
53

Вы также можете использовать PyObjC на iPhone, благодаря отличной работе Джея Фримена (saurik). См. Раздел Приложения для iPhone на Python .

Обратите внимание, что на данный момент для этого требуется взломанный iPhone.

Гаври
источник
24

Кажется, теперь это то, что разработчикам разрешено делать: Соглашение разработчика iOS было изменено вчера и, похоже, было изменено таким образом, чтобы сделать встраивание интерпретатора Python в ваше приложение законным:

РАЗДЕЛ 3.3.2 - ПЕРЕВОДЧИКИ

Старый:

3.3.2 Приложение не может само устанавливать или запускать другой исполняемый код любыми средствами, включая, помимо прочего, использование архитектуры подключаемых модулей, вызов других фреймворков, других API или иным образом. Если иное не одобрено Apple в письменной форме, никакой интерпретируемый код не может быть загружен или использован в Приложении, за исключением кода, который интерпретируется и запускается Документированными API Apple и встроенными интерпретаторами. Несмотря на вышесказанное, с предварительного письменного согласия Apple Приложение может использовать встроенный интерпретируемый код ограниченным образом, если такое использование предназначено исключительно для предоставления второстепенных функций или функций, которые соответствуют предполагаемой и рекламируемой цели Приложения.

Новое:

3.3.2 Приложение не может загружать или устанавливать исполняемый код. Интерпретируемый код может использоваться в Приложении только в том случае, если все сценарии, код и интерпретаторы упакованы в Приложении, а не загружены. Единственное исключение из вышеизложенного - это скрипты и код, загружаемые и выполняемые встроенной структурой Apple WebKit.

jkp
источник
23

Да, ты можешь. Вы пишете свой код на tinypy (который ограничен Python), затем используете tinypy для преобразования его в C ++ и, наконец, компилируете его с помощью XCode в собственное приложение для iPhone. Фил Хасси опубликовал игру под названием Elephants! используя этот подход. Вот подробности,

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

Асим Джалис
источник
21

Да, в настоящее время вы можете разрабатывать приложения для iOS на Python.

Есть два фреймворка, которые вы можете проверить : Kivy и PyMob .

Пожалуйста, примите во внимание ответы на этот вопрос , поскольку они более актуальны, чем этот.

Филипе Коррейя
источник
Kivy и PyMob не создают собственные приложения
Сержик
Зависит от вашего определения слова «родной». Вопрос подразумевает определение, которое охватывает написание приложения Python для OSX, в определенной степени таким же образом, как теперь вы можете писать их для iOS.
Filipe Correia
19

Обновление Соглашения с разработчиком iOS означает, что вы можете использовать все, что захотите, при условии, что вы соответствуете рекомендациям для разработчиков. Раздел 3.3.1, ограничивавший возможности разработчиков для разработки под iOS, был полностью удален.

Источник: http://daringfireball.net/2010/09/app_store_guidelines

Гордон Кристи
источник
2
К счастью, этот язык был удален из 3.3.1 !!
Дэн МакКлейн
10

Pythonista имеет функцию экспорта в Xcode, которая позволяет экспортировать сценарии Python в виде проектов Xcode, которые создают автономные приложения для iOS.

https://github.com/ColdGrub1384/Pyto также заслуживает внимания.

cclauss
источник
4

В соглашении с iPhone SDK также довольно расплывчато говорится о том, разрешено ли вам запускать языки сценариев (кроме Javascript WebView). Я считаю, что это нормально - пока ни один из выполняемых вами скриптов не загружается из сети (поэтому предустановленные и отредактированные пользователем скрипты кажутся нормальными).

IANAL и т. Д. И т. Д.

Schwa
источник
3

BeeWare - это платформа с открытым исходным кодом для создания собственных приложений для iOS и Android.

Майкл
источник
он все еще находится в стадии разработки и проблематичен
ikel
3

Обновление 2019:

Хотя разработка Python-iOS является относительно незрелой и, вероятно, помешает (afaik) вашему приложению иметь собственный интерфейс и функциональность, которые могут быть достигнуты на языке разработки, поддерживаемом Apple, Apple теперь, похоже, позволяет встраивать интерпретаторы Python в собственный Swift / Obj-C. Программы.

Это поддерживает импорт библиотек Python и запуск сценариев Python (даже с предоставленными аргументами командной строки) непосредственно из вашего собственного кода Swift / Obj-C.

Моя компания фактически оборачивает нашу инфраструктуру (изначально написанную на Python) в собственное приложение для iOS! Он работает очень хорошо, и связь между частями может быть легко достигнута с помощью модели клиент-сервер.

Вот хорошая библиотека от Beeware с шаблоном cookiecutter, если вы хотите попробовать запустить сценарии Python в своем приложении для iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .

Ракиб Хоссейн
источник
1

Технически, если интерпретируемый код НЕ загружен (за исключением JavaScript), приложение может быть одобрено. Фреймворк Rhomobiles "Rhodes" делает именно это, объединяя мобильный Ruby, облегченную версию Rails и ваше приложение для распространения через магазин приложений. Поскольку и интерпретатор, и интерпретируемый код упакованы в окончательное приложение, Apple не считает это нежелательным.

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

Даже после выхода последнего пресс-релиза Apple - приложения Rhodes (мобильный рубин) по-прежнему доступны в магазине приложений. Мне трудно поверить, что tinyPy или pyObjC не найдут себе места, если есть желающее сообщество разработчиков.

Майкл МакКракен
источник
0

Вы можете сделать это с помощью PyObjC, конечно, с взломанного телефона. Но если вы хотите разместить его в App Store, они не разрешат его, потому что он «интерпретирует код». Однако вы можете использовать Shed Skin , хотя я не знаю, чтобы кто-нибудь это делал. Я не могу придумать какой-либо веской причины для этого, поскольку вы теряете динамическую типизацию и можете использовать ObjC.

Зифре
источник
-1

Единственный значительный «внешний» язык для разработки iPhone, о котором я знаю с частично значимой поддержкой с точки зрения фреймворков и совместимости, - это MonoTouch , среда C # /. NET для разработки на iPhone.

Майк
источник
Да, но с новым соглашением разработчика iPhone мы должны подождать и посмотреть, что станет с Mono Touch.
TalkingCode
1
@Holli: Новое соглашение с разработчиками ставит MonoTouch в открытую
Дэн Макклейн
-1

Я думаю, что раньше это было невозможно, но недавно я услышал о PyMob, который кажется интересным, потому что приложения написаны на Python, а конечные результаты - это собственные исходные коды на различных платформах (Obj-C для iOS, Java для Android и т. Д.). Это, безусловно, уникально. Этот веб-страница объясняет это более подробно.

Я еще не пробовал это сделать, но скоро посмотрю.

Джон М.
источник
Судя по всему, это будет коммерческий проект. На данный момент (28 сентября-12) на сайте говорится: «Мы принимаем клиентов для участия в ограниченной бета-программе. Свяжитесь с нами, чтобы узнать», и все.
ccpizza