The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Инструментарий для разработки приложений на языке Python для платформы Android

09.01.2012 22:07

Представлен проект Python for Android, в рамках которого подготовлен инструментарий, позволяющий создавать приложения для платформы Android на языке Python. Итоговые приложения оформляются в виде APK-пакетов, которые можно установить как обычные приложения для Android. Для обеспечения выполнения интерпретатора Python используется Android NDK (Native Development Kit), позволяющий организовать выполнение нативного Си/Си++ кода с задействованием API платформы Android. Код проекта распространяется в рамках лицензии LGPLv2.1.

Для формирования пользовательского интерфейса в Python программах для платформы Android предлагается использовать Python-библиотеку Kivy, предназначенную для быстрого создания многоплатформенных GUI-интерфейсов, которые кроме Android также смогут работать в Linux, Windows и Mac OS X. Для формирования интерфейса напрямую используется OpenGL ES 2. Возможно использование различных протоколов ввода, таких как WM_Touch, WM_Pen, Mac OS X Trackpad, Magic Mouse, Mtdev, HID (ядро Linux), TUIO. Поддерживается мультитач, в том числе возможна эмуляция мультитач через использование двух мышей.

Python-приложения для платформы Android пока могут использовать ограниченное число внешних модулей, круг которых постепенно будет расширяться. Например, в данный момент поддерживается jpeg, pil, png, sdl, sqlite3, pygame, kivy, android, libxml2, libxslt, lxml, ffmpeg и openssl. В APK-пакет включается специально формируемый для каждого проекта дистрибутив Python, содержащий только необходимый для выполнения текущего приложения набор runtime-компонентов. Для запуска приложения требуется создать скрипт main.py.

Следует отметить, что кроме Python for Android развивается несколько других проектов, позволяющих выполнять приложения для платформы Android, но они либо ограничивают возможности языка, либо не предоставляют средств сборки готовых к использованию пакетов, либо не поддерживают формирование GUI-интерфейса, либо не позволяют формировать сборки с желаемым набором компонентов. Среди таких проектов:

  • SL4A (Scripting Layer for Android) - проект по обеспечению запуска скриптов на языках Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl и shell, развиваемый при участии компании Google. В скриптах может быть использован API Android через специальную обвязку вокруг стандартного JSON RPC платформы Android, что позволяет использовать из скриптов функции телефонии, отправлять SMS, получать данные с GPS, web-камеры и акселерометров, обрабатывать события, использовать функции синтезатора речи, формировать интерфейс пользователя.
  • PGS4A (Pygame Subset for Android) - порт Pygame для платформы Android, позволяющий создавать и портировать игры на языке Python с использованием стандартных модулей Pygame.
  • Python-on-a-Chip (p14p) - урезанный вариант виртуальной машины Python (PyMite), поддерживающий лишь часть языка Python.


  1. Главная ссылка к новости (http://txzone.net/2012/01/intr...)
  2. OpenNews: Проект Android-x86 представил сборку Android 4 для платформы x86
  3. OpenNews: Для платформы Android представлен пакет для создания приложений на языке PHP
  4. OpenNews: Мобильная платформа Android обзавелась средствами разработки на языке Perl
  5. OpenNews: В мобильной платформе Android появилась поддержка скриптовых языков
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/32761-ndk
Ключевые слова: ndk, nadroid, python
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, kod (??), 23:05, 09/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на этом можно написать сетевое приложение?
     
     
  • 2.8, kAIST (ok), 02:08, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Модули socket и urllib (urllib2) идут там из коробки. Так что проблем нет.
     
  • 2.18, Аноним (-), 08:30, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > на этом можно написать сетевое приложение?

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

     

  • 1.4, Df232z (?), 23:26, 09/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Слишком много слоев. Моя батарея этого не выдержит.
     
     
  • 2.7, k_bx (?), 01:20, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да бросьте вы. Зато теперь мне будет не лень набросать приложение для проверки счёта в моём банке, возможно.
     
  • 2.9, kAIST (ok), 02:09, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Слишком много слоев. Моя батарея этого не выдержит.

    Ну почему же много. Python там нативен (NDK) а не выполняется через Java. Один слой убрали, другой добавили.

     
     
  • 3.12, progserega (ok), 04:26, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    цитата с описания NDK:

    "If you write native code, your applications are still packaged into an .apk file and they still run inside of a virtual machine on the device. The fundamental Android application model does not change.

    Using native code does not result in an automatic performance increase, but always increases application complexity. If you have not run into any limitations using the Android framework APIs, you probably do not need the NDK."

    Т.е. писать-то можно и на Си, вот только выполнятся код будет всё равно поверх виртуальной машины Android-а...

    П.С. вообще, утомили эти "игла в яйце, яйцо в ларце...".

     
     
  • 4.25, Анонимуз (?), 10:15, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Из процитированного следует другое - насколько бы нативным не был код, чтобы стать андроидным приложением (а не просто бинарем где-то в дебрях системы) к нему нужна еще java-нашлепка. Сам же нативный код, как не странно, будет выполняться все же  непосредственно на проце.
     
     
  • 5.56, progserega (ok), 18:55, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошо если так. В принципе тогда получается можно писать код на Си/С++, нативно его запускать, дёргая из него только некоторые функции через прослойку на виртуальной машине. Т.е. в данной схеме практически будут нивелированы потери производительности на виртуальную машину андроида - так? А графика, звук - тоже нативно или через какую-нибудь буферизацию и протаскивание данных через виртуализацию?
     
     
  • 6.64, Аноним (-), 21:45, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Игрушки под андроид именно так и делают. Более того, в NDK доступны функции для создания activity (местное название «окна»), opengles и низкоуровневого ввода (мультитач и всякие сенсоры), то есть можно писать приложения (точнее игрушки) вообще без единой строчки на java.
     
     
  • 7.69, progserega (ok), 05:19, 11/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Игрушки под андроид именно так и делают. Более того, в NDK доступны
    > функции для создания activity (местное название «окна»), opengles и низкоуровневого
    > ввода (мультитач и всякие сенсоры), то есть можно писать приложения (точнее
    > игрушки) вообще без единой строчки на java.

    Ну тогда вообще не так всё плохо и только сам разработчик решает - писать ли ему на джаве либо на Си. И это уж вопрос к разработчикам. К слову, в свете того, что всё равно все устройства на arm - проблемы многоплатформенности для таких приложений, как я понимаю, не возникает и в текущем положении Dalvik - это лишь java-машина для тех, кто любит писать на java. Или я утрирую и не всё так просто всё же?

     

  • 1.10, Аноним (-), 03:00, 10/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Отличная новость! Обязательно будем пробовать!
    И если.... То тогда мы свои питонячьи проекты в два счета перенесем на мобильную платформу уже нативно, а Obj-C (на яблоках) и жаба (на андроиде), с которым мы поневоле связывались, тихо отдохнут в стороне! Супер!
     
     
  • 2.16, Аноним (-), 08:10, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    только Obj-C - генерит native код и он же выполняется в устройстве.
    А это недоразумение опять же выполняется в виртуальной машине андроида, и так же будет жрать батарейку.
    Хотя мисье наверно готов возить с собой чемодан батареек ?
     
     
  • 3.26, Анонимуз (?), 10:25, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вроде русским по бэкграунду написано, что интерпретатор питона выполняется нативно.
     
     
  • 4.32, Аноним (-), 11:54, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вроде русским по бэкграунду написано, что интерпретатор питона выполняется нативно.

    Зато скриптоподелка в нем нифига не транслируется в нативные инструкции и интерпретируется по ходу дела. Так что поток команд в проц с полезной логикой густо разбавлен чисто техническим потоком команд самого интерпретера. Более того, выполнение интерпретера оказывается львиной долей всей работы проца. Именно поэтому все кого волновала скорость и ушли на компиляторы и/или jit. Но до питонистов как обычно...

     
     
  • 5.40, yo (?), 12:26, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Вроде русским по бэкграунду написано, что интерпретатор питона выполняется нативно.
    > Зато скриптоподелка в нем нифига не транслируется в нативные инструкции и интерпретируется
    > по ходу дела.

    И вы сходите почитайте что такое Cython.

     
  • 3.27, Аноним (-), 11:06, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мсье прямо сегодня кодил в obj-c и с тоской вспоминал при этом зеленого друга А... большой текст свёрнут, показать
     
     
  • 4.33, Аноним (-), 11:55, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > зеленого друга.

    Это вы о питоне так? Зеленый змий? :))

     
     
  • 5.45, Аноним (-), 12:48, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Нет-нет! Это *любимый* зеленый змей. Мне действительно очень и очень нравится на нем писать.
     
     
  • 6.49, Аноним (-), 16:28, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нет-нет! Это *любимый* зеленый змей. Мне действительно очень и очень нравится на
    > нем писать.

    Зато мне совершенно не нравится что в системе надо содержать три версии этого дерьма потому что они взаимно не совместимы. Очень доставляет.


     
     
  • 7.51, бедный буратино (ok), 16:33, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Нет-нет! Это *любимый* зеленый змей. Мне действительно очень и очень нравится на
    >> нем писать.
    > Зато мне совершенно не нравится что в системе надо содержать три версии
    > этого дерьма потому что они взаимно не совместимы. Очень доставляет.

    Восемнадцать версий. И кормиить их три раза в день - разве тебе ещё не доложили?

     
     
  • 8.54, Аноним (-), 16:43, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Греп говорит пока только про три Но я подозреваю что питоновские даки и до 18... текст свёрнут, показать
     
     
  • 9.58, 2q (?), 19:21, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А зачем ты их 3 держишь ... текст свёрнут, показать
     
     
  • 10.61, Аноним (-), 19:32, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да что тут не понятного Ну тренируется на досуге грипом искать питон на раздел... текст свёрнут, показать
     
     
  • 11.63, 2q (?), 19:38, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Может ему рассказать про симлинки ... текст свёрнут, показать
     

  • 1.14, python (?), 07:06, 10/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    попробовал поставить - недоделка. Kivy без cython'a не компилится, а cython'a нет в нем...
     
     
  • 2.28, Аноним (-), 11:19, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А теперь наивный вопрос: что мешает запустить питоновый скрипт, создать с его помощью окно, и отрендерить в этом окне, допустим, вебкитом html-страничку+скрипты того-же зеленого чая, а? Или если нужно что-то более серьезное - dojo?
     
     
  • 3.35, Аноним (-), 11:57, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > А теперь наивный вопрос: что мешает запустить питоновый скрипт, создать с его
    > помощью окно, и отрендерить в этом окне, допустим, вебкитом html-страничку

    А зачем все это на питоне, у которого интерпретер сам по себе хряпнет 30% свободной оперативки на девайсе? Чисто из принципа?

     
     
  • 4.43, yo (?), 12:29, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> А теперь наивный вопрос: что мешает запустить питоновый скрипт, создать с его
    >> помощью окно, и отрендерить в этом окне, допустим, вебкитом html-страничку
    > А зачем все это на питоне, у которого интерпретер сам по себе
    > хряпнет 30% свободной оперативки на девайсе? Чисто из принципа?

    30% оперативки? Откуда дровишики?


     
     
  • 5.53, Аноним (-), 16:39, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > 30% оперативки? Откуда дровишики?

    Top запущенный в телефоне. Отдельные несознательные личности просто заманали уже на н900 писать тривиальные аплеты на питоне. Аплет на 10 кило сишного кода у питонистов требует чуть ли не 20 Мб даунлоадов питонистого рантайма и легко жрет под 30М оперативы чисто за тот факт что их высочество изволило вывести свой сраный значок через мегавысокоуровневый фреймворк. А в магазин вы наверное летаете спецрейсом личного самолета. Иначе недостаточно пальцато.

     
     
  • 6.59, 2q (?), 19:27, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> 30% оперативки? Откуда дровишики?
    > Top запущенный в телефоне. Отдельные несознательные личности просто заманали уже на н900
    > писать тривиальные аплеты на питоне. Аплет на 10 кило сишного кода
    > у питонистов требует чуть ли не 20 Мб даунлоадов питонистого рантайма
    > и легко жрет под 30М оперативы чисто за тот факт что
    > их высочество изволило вывести свой сраный значок через мегавысокоуровневый фреймворк.
    > А в магазин вы наверное летаете спецрейсом личного самолета. Иначе недостаточно
    > пальцато.

    В N900 256Мб ОЗУ, python кушает аж 2 Мб, т.е  менее 1%, остается вопрос про 30%.

     
  • 4.46, б.б. (?), 12:52, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> А теперь наивный вопрос: что мешает запустить питоновый скрипт, создать с его
    >> помощью окно, и отрендерить в этом окне, допустим, вебкитом html-страничку
    > А зачем все это на питоне, у которого интерпретер сам по себе
    > хряпнет 30% свободной оперативки на девайсе? Чисто из принципа?

    Эй, дубинушка, утухни!

    http://img.deb6.ru/python-memory.png

     
     
  • 5.65, vasek (?), 01:10, 11/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    а теперь на напиши более-менее серьезное приложение, которое подгружает 5-10 либ, запусти его, и проверь еще раз
    а то нашел чем хвастаться
     
     
  • 6.68, б.б. (?), 04:23, 11/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > а теперь на напиши более-менее серьезное приложение, которое подгружает 5-10 либ, запусти
    > его, и проверь еще раз
    > а то нашел чем хвастаться

    Ответ на вопрос предполагает ответ на вопрос.

    Если вы в припадке истерики кричите "питон сам выжирает 30% (от чего, кстати)", до будьте любезны уже от того, что вам и на этот вопрос ответили. Хотя и этого делать не стоило. Надо было сразу говорить про серьёзное приложение, которое что-то там ест. Хотя я и так скажу, что не ест, у меня даже на компьютере с 128 памяти было обычно несколько штук всего запущено, типа gajim - и ничего плохого с памятью не было.

     
  • 6.71, Аноним240 (?), 22:31, 12/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > а теперь на напиши более-менее серьезное приложение, которое подгружает 5-10 либ, запусти
    > его, и проверь еще раз
    > а то нашел чем хвастаться

    Вспоминаем халяльно-кошерно-православный язык Си, функции malloc() и free(), учим что такое сборщик мусора или он же гарбич-коллектор :
    http://ru.wikipedia.org/wiki/%D0%A1%D0%B1%D0%BE

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

     
  • 4.47, Аноним (-), 12:56, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> А теперь наивный вопрос: что мешает запустить питоновый скрипт, создать с его
    >> помощью окно, и отрендерить в этом окне, допустим, вебкитом html-страничку
    > А зачем все это на питоне,

    Реализация слоя бизнес-логики на строго-типизованном ЯП.

    >у которого интерпретер сам по себе
    > хряпнет 30% свободной оперативки на девайсе? Чисто из принципа?

    Не смешите мои тапки!

    Когда и на каком питоне это было? На 2.5? И что за девайс?
    Девайсы иной раз... такие девайсы! Вот, кстати, на *девайсах* с Mac OS X Lion именно питон 2.5 по дефолту стоит, если не ошибаюсь.

     
     
  • 5.50, Аноним (-), 16:32, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Лол, как звучит то применительно к телефону Вы еще мускуль не забудьте и апач ... большой текст свёрнут, показать
     
     
  • 6.55, Аноним (-), 17:51, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то питоненависничество - это болезнь. Но! К счастью вполне излечимая. Есть хорошо зарекомендовавший себя метод: попробовать оплатить из собственного кармана разработку средненького жаба-приложения. И все глупые вопросы навеянные кривыми аплетами (написанные школьниками на досуге) моментально отпадают.

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

     
  • 6.72, Аноним240 (?), 22:47, 12/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ах да, если уж мы по поводу версий питона то надо добавить
    > что они любят быть взаимно несовместимы.

    2х обратно совместима. 3x между собой совместима. Между третьей и второй промежуток небольшой, средняя программа даже руками правится за минуту другу, а есть и автоматизация.

     
  • 3.39, Аноним (-), 12:25, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Интересно, а господа анонимы вообще слышали что такое Cython?

    Это такая пофигень, которая не совсем совместима с питоном (который и так не вполне совместим сам с собой и таскает по этому поводу в одной системе три версии, бл) и которая вечно недопилена. Подохните уже, халявщики? Сделайте одолжение, а? Один гемор от таких рапид-халтурщиков - потом такие поделия выколупывать заколебывает очень.

     
     
  • 4.44, yo (?), 12:30, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Интересно, а господа анонимы вообще слышали что такое Cython?
    > Это такая пофигень, которая не совсем совместима с питоном (который и так
    > не вполне совместим сам с собой и таскает по этому поводу
    > в одной системе три версии, бл) и которая вечно недопилена

    Это такая штука которая генерит нативный код.


    >. Подохните
    > уже, халявщики? Сделайте одолжение, а? Один гемор от таких рапид-халтурщиков -
    > потом такие поделия выколупывать заколебывает очень.

    Сам такой.

     
     
  • 5.52, Аноним (-), 16:34, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это такая штука которая генерит нативный код.

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

    > Сам такой.

    К счастью не такой. Халтурить - удел халтурщиков.

     
     
  • 6.60, 2q (?), 19:30, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Это такая штука которая генерит нативный код.
    > Ага, только совместимость как обычно, с середины на половину.

    Python -> Cypton полная совместимость, обратно нет, но и не требуется потому как

    Cython -> бинарник.

    >> Сам такой.
    > К счастью не такой. Халтурить - удел халтурщиков.

    Даже и тут схалтурил.

     
  • 2.62, 2q (?), 19:35, 10/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > попробовал поставить - недоделка. Kivy без cython'a не компилится, а cython'a нет
    > в нем...

    Ну что Вы как маленький:
    [code]
    sudo pip install kivy
    [/code]

    Все само ставится.

     
     
  • 3.67, python (?), 02:11, 11/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Для кроскомпиленого python и kivy? Попробуйте собрать этот инструментарий

     
     
  • 4.70, Аноним240 (?), 22:18, 12/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня собралось, в чём проблема?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру