Czy istnieje sposób na uruchamianie Pythona na Androidzie? [zamknięte]

Pracujemy nad wersją S60 i ta platforma ma ładne API Pythona.

Jednak nie ma nic oficjalnego o Pythonie na Androida, ale ponieważ Jython istnieje, czy istnieje sposób, aby wąż i robot współpracowali ze sobą?

Author: Pehlaj, 2008-09-19

25 answers

Jednym ze sposobów jest użycie Kivy :

Otwarta Biblioteka Pythona do szybkiego rozwoju aplikacji które wykorzystują innowacyjne interfejsy użytkownika, takie jak aplikacje multi-touch.

Kivy działa na systemach Linux, Windows, OS X, Android i iOS. Możesz uruchomić ten sam kod [python] na wszystkich obsługiwanych platformach.

Kivy Showcase app

 853
Author: JohnMudd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 22:09:40

Istnieje również nowy projekt Android Scripting Environment (ASE/SL4A). Wygląda niesamowicie i ma pewną integrację z natywnymi komponentami Androida.

Uwaga: już nie pod "aktywnym rozwojem" , ale niektóre widelce mogą być.

 316
Author: Heat Miser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 04:49:05

Tak!

Przykład via Matt Cutts via SL4A -- " oto skaner kodów kreskowych napisany w sześciu liniach kodu Pythona:

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)
 189
Author: unmounted,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-09 16:02:25

Jest też SL4A napisane w dużych przez pracowników Google.

 79
Author: Rab Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 08:51:58
 78
Author: muriloq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-01 10:09:17

Zamieściłem instrukcje i łatkę do cross compiling Python 2.7.2 dla Androida, można ją dostać na moim blogu tutaj: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

EDIT: mam open source Ignifuga , mój silnik gry 2d, jest Python/SDL oparty i krzyż kompiluje dla Androida. Nawet jeśli nie używasz go do gier, możesz uzyskać przydatne pomysły z kodu i narzędzia do budowania (o nazwie Schafer, po Timie...wiesz kto).

 68
Author: gabomdq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-16 17:10:06

Warstwa skryptów dla Androida

SL4A robi co chcesz. Możesz łatwo zainstalować go bezpośrednio na urządzeniu z ich strony i nie potrzebujesz roota.

Obsługuje wiele języków. Pyton jest najbardziej dojrzały. Domyślnie używa Pythona 2.6, ale istnieje Port 3.2, którego możesz użyć zamiast niego. Użyłem tego portu do wszelkiego rodzaju rzeczy na Galaxy S2 i działało dobrze.

API

SL4A udostępnia port swojej biblioteki android dla każdego obsługiwany język. Biblioteka udostępnia interfejs do bazowego interfejsu API systemu Android za pośrednictwem jednego obiektu Android.

from android import Android

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

Każdy język ma prawie to samo API. Można nawet użyć JavaScript API wewnątrz webviews.

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

Interfejsy Użytkownika

Dla interfejsów użytkownika, masz trzy opcje:

  • możesz łatwo korzystać z ogólnych, natywnych dialogów i menu poprzez API. Jest to dobre dla dialogów potwierdzenia i innych podstawowych użytkowników wejścia.
  • można również otworzyć webview z poziomu skryptu Pythona, a następnie użyć HTML5 dla interfejsu użytkownika. Gdy używasz webviews z Pythona, możesz przekazać wiadomości tam i z powrotem, między webview a procesem Pythona, który / align = "left" / Interfejs użytkownika nie będzie natywny, ale nadal jest to dobra opcja mam.
  • istnieje jakieś wsparcie dla natywnych interfejsów użytkownika Androida, ale nie jestem jasne, jak dobrze to działa; po prostu nigdy go nie używałem.

Można mieszać opcje, dzięki czemu możesz mieć Widok sieci Web dla głównego interfejsu i nadal korzystać z natywnych dialogów.

QPython

Istnieje projekt strony trzeciej o nazwie QPython . Opiera się na SL4A i wrzuca kilka innych przydatnych rzeczy.

QPython zapewnia ładniejszy interfejs użytkownika do zarządzania instalacją i zawiera mały edytor kodu Z Ekranem dotykowym, powłokę Pythona i powłokę PIP do zarządzania pakietami. Mają również Port Python 3. Obie wersje są dostępne w Sklepie Play, za darmo z zarzutem. QPython zawiera również pakiety bibliotek z kilku projektów Pythona na Androida, w tym Kivy, więc nie jest to tylko SL4A.]}

Zauważ, że QPython nadal rozwija widelec SL4A(choć szczerze mówiąc niewiele). Główny projekt SL4A jest prawie martwy.

Przydatne Linki

 66
Author: Carl Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 20:03:26

Jako miłośnik Pythona i programista Androida, z przykrością stwierdzam, że nie jest to dobry sposób. Są dwa problemy.

Jeden problem polega na tym, że w narzędziach programistycznych Androida jest o wiele więcej niż tylko język programowania. Wiele grafik na Androida zawiera pliki XML do konfiguracji wyświetlacza, podobnie jak HTML. Wbudowane obiekty java są naprawdę zintegrowane z tym układem XML i jest to o wiele łatwiejsze niż pisanie własnego kodu, aby przejść od logiki do bitmap.

Innym problemem jest to, że G1 (i prawdopodobnie inne urządzenia z Androidem w najbliższej przyszłości) naprawdę nie są tak szybkie. Procesory 200 MHz, a pamięć RAM jest bardzo ograniczona. Nawet w Javie trzeba zrobić przyzwoitą ilość przepisywania-aby-uniknąć-więcej-tworzenia obiektów, jeśli chcesz, aby Twoja aplikacja była idealnie gładka. Python będzie przez jakiś czas zbyt wolny na urządzeniach mobilnych.

 59
Author: lacker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 22:11:05

Nie w tej chwili i będziesz miał szczęście, że Jython wkrótce wróci do pracy. Jeśli planujesz rozpocząć swój rozwój już teraz, lepiej byłoby trzymać się Javy na razie.

 35
Author: Ilya Kochetov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-23 14:58:45

Używając SL4A (o którym już wspomniano w innych odpowiedziach), możesz Uruchomić pełnowymiarową instancję web2py (inne Python web Framework są prawdopodobnie kandydatami). SL4A nie pozwala na tworzenie natywnych komponentów interfejsu użytkownika( przycisków, pasków przewijania itp.), ale obsługuje WebViews . WebView to w zasadzie nic więcej niż paski w dół przeglądarki internetowej skierowanej na stały adres. Uważam, że natywna aplikacja Gmail używa WebView zamiast idąc zwykłą trasą widgetów.

Ta trasa miałaby kilka ciekawych cech:

  • W przypadku większości frameworków internetowych Pythona można tworzyć i testować bez użycia urządzenia z Androidem lub emulatora Androida.
  • jakikolwiek Kod Pythona, który napiszesz dla telefonu, może być również umieszczony na publicznym serwerze WWW z bardzo małą (jeśli w ogóle) modyfikacją.
  • możesz wykorzystać wszystkie szalone rzeczy internetowe tam: query, HTML5, CSS3, itd.
 33
Author: gdw2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-26 05:48:09

Kivy


Chcę opublikować to jako rozszerzenie tego, co @JohnMudd już odpowiedział (ale proszę o cierpliwość, ponieważ angielski nie jest moim pierwszym językiem )

Od tego czasu minęło wiele lat, a Kivy ewoluowało do wersji 1.9-dev. Moim zdaniem największą zaletą Kivy jest kompatybilność między platformami. Możesz kodować i testować w środowisku lokalnym (Windows / * nix itp.), możesz również zbudować, debugować i pakować aplikację, aby działała na Twoim Urządzenia z systemem Android/iOS / Mac / Windows.

Za pomocą własnego języka KV Kivy można łatwo kodować i budować interfejs GUI (jest to tak samo jak Java XML, ale zamiast TextView itp., KV ma swój własny ui.widgets do podobnego tłumaczenia), który jest moim zdaniem dość łatwy do przyjęcia.

ObecnieBuildozer i python-for-android są najbardziej zalecanymi narzędziami do tworzenia/pakowania aplikacji. Próbowałem ich obu i mogę mocno powiedzieć, że tworzą Androida aplikacje z Pythonem to pestka. Użytkownicy, którzy czują się komfortowo w konsoli / terminalu/wierszu polecenia, nie powinni mieć problemów z ich używaniem, a ich przewodniki są również dobrze udokumentowane.

Ponadto, iOS jest kolejnym dużym punktem sprzedaży Kivy, pod warunkiem, że możesz użyć tej samej bazy kodu z niewielkimi zmianami wymaganymi do testowania na urządzeniu z systemem iOS, za pomocą kivy-iOS Homebrew tools, chociaż Xcode jest wymagany do kompilacji przed uruchomieniem na swoich urządzeniach (AFAIK symulator iOS w Xcode obecnie nie działa w architekturze x86). Istnieją również pewne problemy z zależnościami, które muszą być ręcznie skompilowane i manipulowane w Xcode, aby mieć pomyślną kompilację, ale nie byłoby to zbyt trudne do rozwiązania, a ludzie w Kivy Google Group są naprawdę pomocne.

Biorąc wszystko pod uwagę, użytkownicy z dobrą znajomością Pythona nie powinni mieć problemu z opanowaniem podstaw w ciągu tygodni (jeśli nie dni), aby zbudować proste aplikacje.

Warto również wspomnieć, że że możesz wiązać (tworzyć receptury) swoje Moduły Pythona z kompilacją, aby użytkownicy mogli naprawdę korzystać z wielu istniejących bibliotek, które przyniósł nam Python, jak Requests & PIL itd. poprzez wsparcie rozszerzenia Kivy .

Czasami Twoja aplikacja wymaga funkcjonalności wykraczającej poza zakres tego, co Kivy może dostarczyć. W takich przypadkach konieczne jest korzystaj z zewnętrznych bibliotek oprogramowania. Biorąc pod uwagę bogactwo Ekosystem Pythona, jest już dużo oprogramowania biblioteki, które można po prostu importować i używać od razu.

Ostatni, ale nie najmniej ważny, jeśli zamierzasz używać Kivy do poważniejszych / komercyjnych projektów, istniejące moduły mogą okazać się niezadowalające. Istnieją jednak pewne praktyczne rozwiązania, z "work in progress" pyjnius dla Androida i pyobjus {14]}. Użytkownicy mogą teraz uzyskać dostęp do klas Java / Objective - C za pośrednictwem tych modułów, aby kontrolować niektóre natywne API.

Mój doświadczenie w Kivy polega na tym, że najlepiej pasuje do doświadczonych programistów Pythona i niektórych poważnych programistów, którzy chcą szybkiego rozwoju lub prostej obsługi bazy kodu. Działa dobrze na wielu platformach, choć nie do końca z natywnym odczuciem {8]}.

Mam nadzieję, że niektórzy programiści aplikacji Pythona uznają te informacje za przydatne i zaczną przyglądać się Kivy. Może być lepiej (z większym wsparciem i jak biblioteki / Moduły się przenoszą), jeśli jest duże zainteresowanie ze strony społeczność.

P. S. nie mam żadnego związku z Kivy, jestem po prostu programistą, który naprawdę lubi pomysł wprowadzenia programowania Pythona do rozwoju mobilnego / wieloplatformowego.

 32
Author: Anzel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-08 03:56:33

Używam aplikacji QPython. Posiada edytor, konsolę i możesz za jego pomocą uruchamiać swoje programy w Pythonie. Aplikacja jest darmowa, a link to http://qpython.com/.

 22
Author: kyle k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 00:35:57

From the Python for android site:

Python dla Androida to projekt do stworzenia własnej dystrybucji Pythona, w tym modułów, które chcesz, i utworzyć apk, w tym python, libs, i aplikacji.

 19
Author: gdw2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-09 04:46:53

Kolejna próba: https://code.google.com/p/android-python27/

Ten osadza bezpośrednio interpreter Pythona w aplikacji apk.

 16
Author: e-satis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-09 15:44:49

Możesz użyć Termux Zastosowanie:

Zauważ, że apt install python instaluje Pythona 3. dla Pythona 2 należy wywołać apt install python2.

Kilka demek tutaj: https://www.youtube.com/watch?v=fqqsl72mASE

A także strona github: https://github.com/termux

 15
Author: Adrian Stanculescu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-20 11:36:47

Możesz uruchomić swój kod Pythona używając sl4a. sl4a obsługuje Python, Perl, JRuby, Lua , BeanShell, JavaScript, Tcl i skrypt powłoki.

Możesz nauczyć się sl4a Python Examples.

 11
Author: Hitul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-13 00:34:26

Jest też python-on-a-chip prawdopodobnie działający mosync: google group

 11
Author: fooba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 13:35:25

Możesz użyć QPython :

Posiada konsolę Pythona, Edytor, a także Zarządzanie pakietami / instalatory

Http://qpython.com/

Jest to projekt open source z implementacjami Pythona 2 i Pythona 3. Możesz pobrać źródło i Androida .pliki apk bezpośrednio z github.

QPython 2: https://github.com/qpython-android/qpython/releases

QPython 3: https://github.com/qpython-android/qpython3/releases

 9
Author: ode2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-16 02:41:18

Chaquopy

Chaquopy to wtyczka do systemu Android Studio Gradle. Skupia się na ścisłej integracji ze standardowymi narzędziami programistycznymi Androida.

  • Zapewnia kompletne interfejsy API do wywoływania Javy z Pythona lub Pythona z Javy , umożliwiając programistom używanie dowolnego języka dla każdego komponentu ich aplikacji.

  • Może automatycznie pobierać Pakiety PyPI i budować je w aplikacji, w tym wybranych pakietów natywnych, takich jak NumPy.

  • Umożliwia pełny dostęp do wszystkich API Androida z Pythona, w tym natywnego zestawu narzędzi interfejsu użytkownika (przykład aktywności pure-Python ).

Jest to produkt komercyjny, ale jest darmowy do użytku open-source i zawsze tak pozostanie.

(jestem twórcą tego produktu.)

 9
Author: mhsmith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-16 17:12:15

W playstore znajduje się aplikacja o nazwie QPython3, która może być używana zarówno do edycji, jak i uruchamiania skryptów Pythona.

Playstore link

Kolejna aplikacja o nazwie Termux, w której można zainstalować Pythona za pomocą polecenia

pkg install python

Playstore Link

 9
Author: Pzy64,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 07:59:54

Nie widziałem tego tutaj, ale można to zrobić z Pyside i Qt teraz, że Qt działa na Androidzie dzięki Necessitas.

W tej chwili wydaje się to dość kludge, ale może być realna trasa w końcu...

Http://qt-project.org/wiki/PySide_for_Android_guide

 8
Author: radix07,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-06 14:59:14

Inną opcją, jeśli szukasz 3.4.2 lub 3.5.1, jest to archiwum na Githubie.

Python3-Android 3.4.2 lub Python3-Android 3.5.1

Obecnie obsługuje Python 3.4.2 lub 3.5.1 i wersję 10D NDK. Może również obsługiwać 3.3 i 9c, 11c i 12

Fajnie, że po prostu go ściągasz, uruchamiasz make i dostajesz .so lub the .a

Obecnie używam tego do uruchamiania surowego Pythona na urządzeniach z Androidem. Z kilkoma modyfikacjami do pliki build można również zrobić x86 i armeabi 64 bit

 8
Author: GR Envoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-11 13:10:34

Jeszcze jedną opcją wydaje się być pyqtdeploy który cytując docs jest:

Narzędzie, które w połączeniu z innymi narzędziami dostarczonymi z Qt umożliwia wdrażanie aplikacji PyQt4 i PyQt5 napisanych w języku Python v2. 7 lub Python V3.3 lub nowszy. Obsługuje wdrażanie na pulpicie platformy (Linux, Windows i OS X) oraz na platformy mobilne (iOS i Android).

Zgodnie z wdrażanie aplikacji PyQt5 na Androida za pośrednictwem pyqtdeploy i Qt5 jest aktywnie rozwijany, chociaż trudno jest znaleźć przykłady działających aplikacji na Androida lub samouczka, jak skompilować wszystkie wymagane biblioteki na Androida. Jest to ciekawy projekt, o którym należy pamiętać!

 6
Author: Andrzej Pronobis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:36

Spójrz na BeeWare . W chwili odpowiedzi na to pytanie jest jeszcze we wczesnym rozwoju. Jego celem jest możliwość tworzenia natywnych aplikacji z Pythonem dla wszystkich obsługiwanych systemów operacyjnych, w tym Android.

 3
Author: DrawT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-12 18:56:16

Sprawdź enaml-native , który wykorzystuje koncepcję React-native i stosuje ją do Pythona.

Pozwala użytkownikom tworzyć aplikacje z natywnymi widżetami Androida i zapewnia API do korzystania z bibliotek android i java z Pythona.

Integruje się również z android-studio i udostępnia kilka ciekawych funkcji programistycznych Reacta, takich jak przeładowywanie kodu i zdalne debugowanie.

 3
Author: frmdstryr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-20 16:59:32