Питання Чи є спосіб запустити Python на Android? [ЗАЧИНЕНО]


Ми працюємо на S60 версія, і ця платформа має хороший API Python.

Проте офіційно про Python немає в Android, але з тих пір Джітон існує, чи є спосіб дозволити змії та роботу працювати разом?


1892
2017-09-19 13:21


походження


Давайте перевіримо теорію Джоеля про можливість оновлення для високопосадових публікацій, які розміщені в Google. Див нижче або це: google-opensource.blogspot.com/2009/06/... - unmounted
Я маю на увазі зворотне. З огляду на невеликий вміст цього повідомлення, якщо він добре оцінений, це має бути величезне очікування. Я сильно сподіваюсь, що найкращий для цього проекту, я сам більше pythonista, ніж Java, і кодування Android з цією мовою буде небо рок етапі прототипів. - e-satis
О, вірно ... Я не думаю, що оновлення питання є корисним, але зміна прийнятого answser, звичайно, є. - e-satis
@ e-satis ти правий Я новачок у пітоні та його технічності, я використовував для компіляції мов C / C ++. Але все ж таки віртуальна машина всередині віртуальної машини не стане найшвидшою річчю коли-небудь, і, ймовірно, зможе конкурувати з найменшим способом виконувати код. Звичайно, це має свою корисність. Я не ненавиджу на Python чи Android, але ... - user457015
@ user457015 Я думаю, ви повинні дійсно ознайомитися з тим, як сучасні JVMs реалізовані, вони ніде поблизу до "сценаріїв" або "тлумачення" зараз. Якщо що-небудь, Java зараз лише ~ 10-25% повільніше, ніж добре / чудово написано C / C ++ код. Та є шлях менш місце, щоб гвинт писати в Java ... - TC1


Відповіді:


Одним із способів є використання Ківі:

Бібліотека Python з відкритим кодом для швидкого розвитку додатків   які використовують інноваційні інтерфейси користувача, такі як багатошарові програми.

Kivy працює на Linux, Windows, OS X, Android і iOS. Ви можете запускати один і той же код [python] на всіх підтримуваних платформах.

Kivy Вітрина додаток 


820
2017-11-18 21:49



Якщо ви використовуєте Kivy, ось інструмент, який допоможе вам скомпонувати ваш проект у форматі APK: github.com/kivy/python-for-android - gdw2
@ e-satis зробив Ківі працювати для вас? чи було це корисно? Я був би дуже вдячний, якщо б ви могли опублікувати свій досвід з Ківі в моєму питання :) - juliomalegria
Я граю з Ківі на минулому тижні, намагаючись написати гру. Їхні основні розробники дуже швидко відповіли на запитання в IRC, однак, якщо ви запрограмували графічний інтерфейс, перш ніж Kivy змусить вас сказати WTF досить багато. Деякі приклади неочікуваних речей, які були дивними для мене: всі віджети отримують кожну подію on_touch_down, навіть якщо подія сталася поза їх регіоном, ніякий віджет не має методу draw (), майже все відбувається за допомогою спеціального шаблону спостереження за власними властивостями, які вони складали ( зверніть увагу на те, що ці назви поділяються на властивість Python, але вони не однакові) - Trey Stout
Тепер, майже цілий рік пізніше, чи підтримує вона краще? Чи були тут помітні поліпшення? - TankorSmash
Ще один рік, проклятий google, з усіма пітонами, які вони, здається, люблять з веб-сайтами, не люблять пітона в Android. - Dexter


Існує також новий Середовище сценаріїв Android (ASE / SL4A). Це виглядає чудово, і він має деяку інтеграцію з рідними компонентами Android.

Примітка: більше не під "активним розвитком", але може бути кілька вилок.


303
2018-06-10 05:24



Правда, але вони повинні мати ASE, це не рішення, яке дозволяє писати додаток для Android в python без нічого вже встановленого (звичайним користувачем буде все "wtf це ASE річ?) - Stuart Axon
Крім того, ASE - це обмежене середовище; ви не можете писати повномасштабні додатки для Android, навіть якщо попередньо встановлено ASE. Побачити stackoverflow.com/questions/2076381 - Sridhar Ratnakumar
Я думаю, це було перейменовано в SL4A. - Vanuan
Ви можете створювати додатки, пакувати їх і навіть продавати їх у магазині Play, якщо вам подобається, з днями SL4A. Це добре підходить, оскільки вищезазначені коментарі були опубліковані. Якщо ви хочете Python на Android, то PY4A, який працює на SL4A, напевно, є найкращим вибором. - Carl Smith
Я підтверджую, SL4A тепер дозволяє писати пакети додатків, готових до використання, я спробував з perl це працює - ubugnu


ТАК!

Приклад через Мета Кеттса через SL4A - "це сканер штрих-коду, написаний у шість рядків коду Python:

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)

180
2018-06-10 05:13



С / ТАК / Мех. може бути / ... це вкрай обмежене. що-небудь графічне чи мульти-сенсорне? великий НІ. - gcb
@gcb ви не можете використовувати звичайний набір віджетів Android, але ви можете використовувати "webviews" (це, наприклад, використовується рідним додатком gmail). - gdw2
гольф: import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT'])) - Alex L
@ gdw2, звичайна програма Gmail лише використовує WebView для аналізу електронних листів, але не для фактичного інтерфейсу користувача. Це робить порівняння трохи абсурдним. - Veselin Romić


Там також SL4A великі співробітники компанії Google.


73
2018-05-26 09:21





"The Піднабір Pygame для Android є портом підмножини функцій Pygame для платформи Android. Мета проекту полягає у тому, щоб дозволити створення спеціальних ігор для Android, а також полегшити перенесення ігор з платформ на базі ПК до Android ".

Приклади включають в себе повну гру, упаковану в APK, що досить цікаво.


71
2018-01-28 12:18



Декілька аспектів були порушені на моєму Droid X (кнопки або сенсорний екран, не пам'ятаю), тому я не пройшов дуже далеко з цим маршрутом. - gdw2


Я розмістив інструкції та патч для крос-компіляції Python 2.7.2 для Android, ви можете отримати його в своєму блозі тут: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

EDIT: я відкрив джерело Ігніфуга, мій 2D ігровий движок, це Python / SDL, і він перехресно компілює для Android. Навіть якщо ви не використовуєте його для ігор, ви можете отримати корисні ідеї з коду та утиліти будівельника (називається Шафер, після Тіма ... ти знаєш кого).


63
2017-10-12 13:49



Вражаюче. +1 для цього Не приймається, тому що ви не можете нічого писати для публіки з цим. - e-satis
Якщо ви маєте на увазі, що ви не можете створювати графічні додатки, ви, звичайно, може, звичайно, потребує додаткової роботи. Я насправді використовую цей порт в поєднанні з SDL 1.3, це не тривіальне перехід від інтерпретатора python до інтерактивного додатку, але це може бути зроблено. - gabomdq


Сценарний шар для Android

SL4A робить те, що хочеш. Ви можете легко встановити його безпосередньо на своєму пристрої зі свого сайту, і не потребує коріння.

Він підтримує різні мови. Пітон є найбільш зрілим. За замовчуванням він використовує Python 2.6, але є a 3.2 порт ви можете використовувати замість цього. Я використовував цей порт для всіх видів речей на Galaxy S2, і він працював нормально.

API

SL4A забезпечує порт їх android бібліотека для кожної підтримуваної мови. Бібліотека забезпечує інтерфейс базового API Android за допомогою єдиного Android об'єкт

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

Кожна мова має майже те саме API. Ви навіть можете використовувати JavaScript API всередині webviews.

let droid = new Android();
droid.ttsSpeak("hello from js");

Інтерфейси користувача

Для користувацьких інтерфейсів у вас є три варіанти:

  • Ви можете легко використовувати загальні, рідні діалоги та меню через API Це добре для підтвердження діалогів та інших основних входів користувача.
  • Ви також можете відкрити веб-огляди зсередини сценарію Python, а потім використовувати HTML5 для користувальницького інтерфейсу. Коли ви використовуєте веб-огляди з Python, ви можете пройти повідомлення назад і вперед, між веб-оглядом та процесом Python це породила його. Інтерфейс користувача не буде рідним, але він все ще є гарним варіантом мати
  • є дещо Підтримка оригінальних інтерфейсів Android для користувачів, але я не є впевнені, наскільки добре вона працює; Я просто ніколи не використовував це.

Ви можете змішувати параметри, так що ви можете мати веб-перегляд для основного інтерфейсу і використовувати рідні діалоги.

QPython

Існує проект третьої сторони QPython. Вона побудована на SL4A, і кидає в деяких інших корисних речей.

QPython дає вам кращий інтерфейс для керування вашою установкою, і включає в себе невеликий редактор коду, колір Python і оболонку PIP для керування пакунками. Вони також мають порт Python 3. Обидві версії доступні у магазині Play безкоштовно. QPython також об'єднує бібліотеки з Python на проекти Android, включаючи Kivy, тому це не просто SL4A.

Зауважте, що QPython все ще розвиває свою вилку SL4A (правда, не настільки чесно). Головний проект SL4A майже вбитий.

корисні посилання


57
2018-03-19 15:45



Чи можете ви використовувати будь-який з тих, хто запускає скрипт python з терміналу або tasker? Я не можу знайти спосіб :( - Pitto
Ви можете запустити скрипт SL4A від Tasker. Є кілька прикладів ця сторінка які мають фрагменти Python, що запускаються з Tasker. Насправді цілком інше питання. - Carl Smith


Як Python коханець і програміст Android, мені сумно сказати, що це не дуже хороший спосіб піти. Є дві проблеми.

Одна з проблем полягає в тому, що для інструментів розробки Android є набагато більше, ніж просто мова програмування. Багато графіки Android включають XML-файли для налаштування дисплея, подібно до HTML. Вбудовані Java-об'єкти дійсно інтегровані в цей макет XML, і це набагато простіше, ніж написання власного коду, щоб перейти від логіки до растрового зображення.

Інша проблема в тому, що G1 (і, ймовірно, інші пристрої Android для найближчого майбутнього) насправді не так швидко. 200 МГц, а оперативна пам'ять дуже обмежена. Навіть у Java ви повинні зробити пристойну кількість переписати, щоб уникати, більше-створення об'єкта, якщо ви хочете зробити ваш додаток ідеально гладкою. Python буде на деякий час занадто повільним на мобільних пристроях.


56
2017-11-01 20:29



На телефоні Android не існує жодного Java-слів, він складається на байтовий код під час процесу упаковки. Швидкість не є проблемою: Google може надавати інструменти, що створюють правильний код байтів з коду python (як і для Jython). До речі, Dalvik - це не Java VM, а це не про Java VS Python. - e-satis
Хехе 200 МГц ... 4 роки по тому і зараз телефони мають чотирьохядерні процесори ... LOL. - Touzen
Байт-код JAVA все ще потребує обробки JVM, і мова Java обов'язково має збирати сміття. Фактична швидкість могла прийти лише з C ++. - LtWorf
@Touzen ще 2 роки потому ми використовуємо процесор Intel Atom або восьмиядерні процесори. ;) - Rohan Kandwal
Через різницю в потужності, яку вони здатні намалювати, телефони завжди будуть на порядок повільніше, ніж на настільних комп'ютерах. Тим не менше, не кидайся на Python для мобільного пристрою, оскільки зазвичай процесорна робота відповідає лише частині коду, і цю частину можна оптимізувати, переписавши її іншою мовою. - Evgeni Sergeev