Pytanie Czy istnieje sposób uruchamiania Pythona na Androida? [Zamknięte]


Pracujemy nad S60 wersja i ta platforma ma ładny interfejs API Pythona.

Jednak nie ma nic oficjalnego w Pythonie na Androida, ale od tego czasu Jython istnieje, czy istnieje sposób, aby pozwolić wężowi i robotowi pracować razem?


1892
2017-09-19 13:21


pochodzenie


Przetestujmy teorię Joela na temat możliwości aktualizacji dla słupków SO w rankingu dobrze google. Zobacz poniżej lub to: google-opensource.blogspot.com/2009/06/... - unmounted
Mam na myśli coś przeciwnego. Biorąc pod uwagę niewielką zawartość tego posta, jeśli jest dobrze w rankingu, musi to być olbrzymie oczekiwanie. Mam nadzieję, że to, co najlepsze dla tego projektu, jestem bardziej pythonistą niż facetem Javy, a kodowanie Androida z tym językiem nie byłoby w stanie zakończyć etapu prototypowania. - e-satis
Och, prawda ... Nie sądzę, żeby aktualizacja pytania była przydatna, ale zmiana akceptowanego przyjaciela jest z pewnością. - e-satis
@ e-satis masz rację. Jestem nowy w python i jego technice, jestem używany do kompilacji języków C / C ++. Wciąż jednak maszyna wirtualna na maszynie wirtualnej nie będzie najszybszą rzeczą w historii i prawdopodobnie może konkurować o najwolniejszy sposób na wykonanie kodu. Na pewno ma swoją użyteczność. Nie nienawidzę Pythona ani Androida, ale ... - user457015
@ user457015 Myślę, że powinieneś naprawdę przeczytać, w jaki sposób są wdrażane współczesne maszyny JVM nigdzie blisko do "skryptowania" lub "interpretacji" już teraz. Jeśli już, Java jest teraz tylko o 10-25% wolniejsza niż dobrze / doskonale napisane Kod C / C ++. I jest o wiele mniej miejsca na zerwanie pisania w Javie ... - TC1


Odpowiedzi:


Jednym ze sposobów jest użycie Kivy:

Otwarta biblioteka Pythona do szybkiego tworzenia aplikacji   wykorzystują innowacyjne interfejsy użytkownika, takie jak aplikacje wielodotykowe.

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

Aplikacja Kivy Showcase 


820
2017-11-18 21:49



Jeśli używasz Kivy, oto narzędzie, które pomoże ci spakować twój projekt do pliku APK: github.com/kivy/python-for-android - gdw2
@ e-satis zrobił Kivy wypracować dla ciebie? czy to było przydatne? Byłbym bardzo wdzięczny, gdybyś mógł zamieścić swoje doświadczenia z Kivy w moim pytanie :) - juliomalegria
W zeszłym tygodniu bawiłem się z Kivy próbując napisać grę. Ich główni programiści bardzo szybko odpowiedzieli na pytania dotyczące IRC, jednak jeśli zaprogramowałeś GUI, zanim Kivy sprawi, że powiesz WTF całkiem sporo. Kilka przykładów nieudokumentowanych rzeczy, które były dla mnie dziwne: Wszystkie widgety otrzymują każde zdarzenie on_touch_down, nawet jeśli zdarzenie miało miejsce poza ich regionem, żaden widget nie ma metody draw (), prawie wszystko dzieje się poprzez niestandardowy wzorzec obserwatora w niestandardowych właściwościach, które przygotowali ( zauważ, że te nazwy mają wspólną własność Pythona, ale nie są takie same) - Trey Stout
Teraz, prawie cały rok później, wsparcie jest lepsze? Czy były jakieś znaczące ulepszenia? - TankorSmash
I kolejny rok, cholerny google, ze wszystkimi pythonami, które wydają się kochać na stronach internetowych, nie ma miłości do Pythona w systemie Android. - Dexter


Jest także nowy Android Scripting Environment (ASE / SL4A) projekt. Wygląda niesamowicie i ma pewną integrację z natywnymi komponentami systemu Android.

Uwaga: nie jest już pod "aktywnym rozwojem", ale może być kilka rozwidleń.


303
2018-06-10 05:24



To prawda, ale muszą mieć zainstalowaną ASE, to nie jest rozwiązanie, które pozwala pisać aplikacje na Androida w pythonie bez niczego już zainstalowanego (zwykły użytkownik będzie wszystkim "wtf jest tym problemem ASE?") - Stuart Axon
Ponadto ASE jest ograniczonym środowiskiem; nie możesz pisać pełnowymiarowych aplikacji na Androida, nawet jeśli ASE jest fabrycznie zainstalowany. Widzieć stackoverflow.com/questions/2076381 - Sridhar Ratnakumar
Myślę, że zmieniono nazwę na SL4A. - Vanuan
Możesz pisać aplikacje, pakować je, a nawet sprzedawać w Sklepie Play, jeśli chcesz, z SL4A teraz dni. Dobrze, że pojawiły się powyższe komentarze. Jeśli chcesz Python na Androida, to PY4A, który działa na SL4A jest prawdopodobnie najlepszym wyborem. - Carl Smith
Potwierdzam, SL4A pozwala teraz pisać pakiety aplikacji gotowe do użycia, próbowałem z perl to działa - ubugnu


TAK!

Przykład przez Matt Cutts przez SL4A - "tutaj jest skaner kodów kreskowych napisany w sześciu wierszach 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)

180
2018-06-10 05:13



s / YES / meh. może / ... jest bardzo ograniczony. coś graficznego lub multi-touch? duże NO. - gcb
@ gcb nie można użyć normalnego zestawu widżetów dla Androida, ale możesz użyć "odsłon" (na przykład używa natywnej aplikacji Gmaila). - gdw2
gra w golfa: 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, z pewnością natywna aplikacja Gmail używa WebView tylko do analizowania wiadomości e-mail, a nie do rzeczywistego interfejsu użytkownika. To sprawia, że ​​porównanie jest trochę absurdalne. - Veselin Romić


Jest także SL4A napisane w dużej części przez pracowników Google.


73
2018-05-26 09:21





"The Podzbiór Pygame dla Androida jest portem podzbioru funkcji Pygame na platformę Android. Celem projektu jest umożliwienie tworzenia gier specyficznych dla systemu Android oraz ułatwienie przenoszenia gier z platform podobnych do komputerów PC na system Android. "

Przykłady obejmują kompletną grę pakowaną w pakiet APK, co jest całkiem interesujące.


71
2018-01-28 12:18



Kilka aspektów zostało uszkodzonych na moim Droid X (przyciski lub ekran dotykowy, nie pamiętam), więc nie dotarłem zbyt daleko z tą trasą. - gdw2


Zamieszczam instrukcje i łatę do krzyżowej kompilacji Pythona 2.7.2 dla Androida, możesz to zrobić na moim blogu tutaj: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

EDYCJA: Mam otwarte źródła Ignifuga, mój silnik gry 2D, jest oparty na Pythonie / SDL i krzyżuje kompilacje 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 Tim ... wiesz kto).


63
2017-10-12 13:49



Imponujący. +1 za to. Nieakceptowane, ponieważ nie można z tego nic napisać dla publiczności. - e-satis
Jeśli masz na myśli to, że nie możesz robić z nim graficznych aplikacji, z całą pewnością możesz potrzebować więcej pracy. Właściwie używam tego portu w połączeniu z SDL 1.3, nie jest rzeczą trywialną przejście z interpretera python do interaktywnej aplikacji, ale można to zrobić. - gabomdq


Warstwa skryptów dla Androida

SL4A robi to, co chcesz. Możesz łatwo zainstalować go bezpośrednio na swoim urządzeniu ze swojej strony i nie potrzebujesz rootowania.

Obsługuje wiele języków. Python jest najbardziej dojrzały. Domyślnie używa Python 2.6, ale istnieje 3.2 port możesz użyć zamiast tego. Użyłem tego portu do wszystkich rzeczy na Galaxy S2 i działało dobrze.

API

SL4A zapewnia port ich android biblioteka dla każdego obsługiwanego języka. Biblioteka zapewnia interfejs do bazowego interfejsu API systemu Android przez jeden Android obiekt.

from android import Android

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

Każdy język ma prawie ten sam interfejs API. Możesz nawet używać JavaScript API w przeglądarkach internetowych.

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

Interfejsy użytkownika

W przypadku interfejsów użytkownika dostępne są trzy opcje:

  • Możesz łatwo korzystać z ogólnych, natywnych dialogów i menu za pośrednictwem API. Jest to dobre dla dialogów potwierdzających i innych podstawowych danych użytkownika.
  • Możesz również otworzyć widok WWW ze skryptu w języku Python, a następnie użyć HTML5 dla interfejsu użytkownika. Kiedy używasz webviews z Pythona, możesz przekazać komunikaty tam iz powrotem, między widokiem webowym a procesem w Pythonie spawnował to. Interfejs użytkownika nie będzie natywny, ale nadal jest dobrym rozwiązaniem mieć.
  • Jest trochę obsługa rodzimych interfejsów użytkownika Androida, ale nie jestem pewnie jak to działa; Po prostu nigdy tego nie używałem.

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

QPython

Istnieje projekt strony trzeciej o nazwie QPython. Opiera się na SL4A i rzuca w inne użyteczne rzeczy.

QPython zapewnia ładniejszy interfejs do zarządzania instalacją i zawiera mały edytor kodu dotykowego, powłokę Python i powłokę PIP do zarządzania pakietami. Mają też port Python 3. Obie wersje są dostępne bezpłatnie ze Sklepu Play. QPython łączy również biblioteki z Pythona w projektach Android, w tym Kivy, więc nie jest to tylko SL4A.

Zauważ, że QPython wciąż rozwija swoje widelce SL4A (choć nie za wiele, aby być szczerym). Główny projekt SL4A jest praktycznie martwy.

Przydatne linki


57
2018-03-19 15:45



Czy można użyć dowolnego z nich do uruchomienia skryptu Pythona z terminala lub zadania? Nie mogę znaleźć sposobu :( - Pitto
Możesz uruchomić skrypt SL4A z Tasker. Oto kilka przykładów ta strona które mają uruchamiane fragmenty Pythona z Taskera. Jest to jednak zupełnie inne pytanie. - Carl Smith