Могу ли я написать нативные приложения для iPhone с использованием Python

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

13 ответов

Решение

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

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

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

2016 редактировать

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

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

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

It seems this is now something developers are allowed to do: the iOS Developer Agreement was changed yesterday and appears to have been ammended in a such a way as to make embedding a Python interpretter in your application legal:

SECTION 3.3.2 — INTERPRETERS

Старый:

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

Новое:

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

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

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

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

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

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

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

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

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

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

IANAL и т. Д. И т. Д.

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

Обновление 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.

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

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

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

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

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

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

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

Другие вопросы по тегам