Vraag Is er een manier om Python op Android uit te voeren? [Gesloten]


We werken aan een S60 versie en dit platform heeft een mooie Python API.

Er is echter niets officieels over Python op Android, maar sindsdien Jython bestaat, is er een manier om de slang en de robot samen te laten werken?


1885
2017-09-19 13:21


oorsprong


antwoorden:


Een manier is om te gebruiken Kivy:

Open source Python-bibliotheek voor snelle ontwikkeling van applicaties   die gebruikmaken van innovatieve gebruikersinterfaces, zoals multi-touch-apps.

Kivy draait op Linux, Windows, OS X, Android en iOS. U kunt dezelfde [python] -code uitvoeren op alle ondersteunde platforms.

Kivy Showcase-app 


818
2017-11-18 21:49



Er is ook de nieuwe Android Scripting Environment (ASE / SL4A) project. Het ziet er geweldig uit, en het heeft wat integratie met native Android-componenten.

Opmerking: niet langer onder "actieve ontwikkeling", maar sommige vorken kunnen dat wel zijn.


302
2018-06-10 05:24



JA!

Een voorbeeld via Matt Cutts via SL4A - "hier is een barcodescanner geschreven in zes regels Python-code:

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



Er is ook SL4A in grote letters geschreven door Google-medewerkers.


73
2018-05-26 09:21



"De Pygame Subset voor Android is een poort van een subset van Pygame-functionaliteit naar het Android-platform. Het doel van het project is om Android-specifieke games mogelijk te maken en de overdracht van games van pc-achtige platforms naar Android te vereenvoudigen. "

De voorbeelden omvatten een compleet spel verpakt in een APK, wat best interessant is.


71
2018-01-28 12:18



Ik heb instructies en een patch voor cross-compileren van Python 2.7.2 voor Android gepost, je kunt het hier downloaden op mijn blog: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

EDIT: ik heb open source Ignifuga, mijn 2D Game Engine, het is gebaseerd op Python / SDL en het kruist compileert voor Android. Zelfs als u het niet voor games gebruikt, kunt u nuttige ideeën krijgen van de code en het hulpprogramma voor bouwers (genaamd Schafer, na Tim ... u weet wie).


63
2017-10-12 13:49



Scripting Layer voor Android

SL4A doet wat je wilt. U kunt het eenvoudig vanaf uw eigen site rechtstreeks op uw apparaat installeren en hebt geen root nodig.

Het ondersteunt een reeks talen. Python is het meest volwassen. Standaard wordt Python 2.6 gebruikt, maar er is een 3.2 poort je kunt in plaats daarvan gebruiken. Ik heb die poort voor allerlei dingen op een Galaxy S2 gebruikt en het werkte prima.

API

SL4A biedt een poort van hun android bibliotheek voor elke ondersteunde taal. De bibliotheek biedt een interface naar de onderliggende Android API via een single Android voorwerp.

from android import Android

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

Elke taal heeft vrijwel dezelfde API. U kunt de JavaScript-API zelfs gebruiken in webviews.

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

Gebruikersinterfaces

Voor gebruikersinterfaces hebt u drie opties:

  • U kunt eenvoudig de generieke, native dialogen en menu's gebruiken via de API. Dit is goed voor bevestigingsdialogen en andere basisgebruikersinvoer.
  • U kunt ook een webview openen vanuit een Python-script en vervolgens HTML5 gebruiken voor de gebruikersinterface. Wanneer u webviews van Python gebruikt, kunt u slagen berichten heen en weer, tussen de webview en het Python-proces dat spawnde het. De gebruikersinterface zal niet native zijn, maar het is nog steeds een goede optie om hebben.
  • Er bestaat sommige ondersteuning voor native Android-gebruikersinterfaces, maar dat is niet zo zeker hoe goed het werkt; Ik heb het gewoon nooit gebruikt.

U kunt opties mixen, zodat u een webview voor de hoofdinterface kunt hebben en toch native dialogen kunt gebruiken.

QPython

Er is een extern project genoemd QPython. Het bouwt voort op SL4A en werpt een paar andere nuttige dingen op.

QPython geeft je een leukere gebruikersinterface om je installatie te beheren, en bevat een kleine editor voor het bewerken van een aanraakscherm, een Python-shell en een PIP-shell voor pakketbeheer. Ze hebben ook een Python 3-poort. Beide versies zijn gratis verkrijgbaar in de Play Store. QPython bundelt ook bibliotheken van een hoop Python op Android-projecten, waaronder Kivy, dus het is niet alleen SL4A.

Merk op dat QPython nog steeds hun vork van SL4A ontwikkelt (hoewel, niet veel om eerlijk te zijn). Het belangrijkste SL4A-project zelf is vrijwel dood.

handige links


57
2018-03-19 15:45



Als een Python minnaar en Android-programmeur, ik vind het jammer dat dit niet echt een goede manier is om te gaan. Er zijn twee problemen.

Een probleem is dat er veel meer is dan alleen een programmeertaal voor de Android-ontwikkeltools. Veel van de Android-afbeeldingen bevatten XML-bestanden om het display te configureren, vergelijkbaar met HTML. De ingebouwde Java-objecten zijn echt geïntegreerd met deze XML-lay-out en het is een stuk eenvoudiger dan het schrijven van uw eigen code om van logica naar bitmap te gaan.

Het andere probleem is dat de G1 (en waarschijnlijk andere Android-apparaten voor de nabije toekomst) echt niet zo snel zijn. 200 MHz-processors en RAM is zeer beperkt. Zelfs in Java moet je behoorlijk wat herschrijven-om-te-vermijden-meer-te-creëren als je je app perfect glad wilt maken. Python zal nog een tijdje te traag zijn op mobiele apparaten.


56
2017-11-01 20:29



Niet op dit moment en je zou het geluk hebben Jython snel aan het werk te krijgen. Als je nu van plan bent om je ontwikkeling te starten, zou je beter af zijn als je nu gewoon voor Java blijft.


32
2017-09-19 13:26



Het gebruik van SL4A (dat al in andere antwoorden zelf is genoemd) is mogelijk rennen een volledige web2py instantie (andere python web raamwerken zijn waarschijnlijk ook kandidaten). SL4A staat je niet toe om native UI-componenten (knoppen, schuifbalken en dergelijke) te doen, maar het ondersteunt wel WebViews. Een WebView is eigenlijk niets meer dan een gestreepte webbrowser gericht op een vast adres. Ik geloof dat de native Gmail-app een WebView gebruikt in plaats van naar de normale widgetroute te gaan.

Deze route zou enkele interessante eigenschappen hebben:

  • In het geval van de meeste python-webraamwerken, zou je eigenlijk kunnen ontwikkelen en testen zonder een Android-apparaat of Android-emulator te gebruiken.
  • Welke Python-code u ook voor de telefoon schrijft, kan ook op een openbare webserver worden gezet met zeer weinig (indien aanwezig) aanpassingen.
  • Je zou kunnen profiteren van alle gekke web-dingen die er zijn: query, HTML5, CSS3, etc.

29
2018-01-06 14:34