Android és SL4A

SL4A = Scripting Layer for Android (előzőleg Android Scripting Environment vagy ASE)
http://code.google.com/p/android-scripting/

Ez egy szoftver réteg az Android platform és a script nyelv között, mely segítségével nagyon egyszerű kiterjesztést írni az Android platformhoz. Az alábbi nyelveket támogatja: Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, and shell

Engem speciel python érdekel, ennél egy import android betölti a teljes android modult. Az SL4A telepítésével és a python modul telepítésével egy rakás minta program is telepítésre kerül.

Nagyon brutál jó. Írtam egy rövid progit és teszteltem a telómon a notebook-omhoz képest, kereken 20x gyorsabb a notim. :)

FAQ rész egy érdekes bejegyzése:

"Does SL4A compile the supported languages to Dex bytecode or is there an additional layer of interpretation?

It depends on the language a bit. BeanShell is run in the JVM and has an additional layer of interpretation. Lua, Python, and Perl are actually the C versions running natively. All interaction with Android is over RPC channels. Still, the RPC API is compiled to dex so there's no additional interpretation in Java (other than reflection)."

Nagyon jól jöhet egyszerű alkalmazások fejlesztéséhez mivel az Android SDK nem nagyon érdekel, a python kiterjesztés viszont nagyon ;)

Kiegészítés: tartalmaz API browser-t is!

Az alábbi lépések a használathoz kb.:
- sl4a_r2.apk csomag telepítése
- python_for_android_r1.apk telepítése
- sl4a futtatása

Nagyon egyszerű, az SL4A-n belül van szövegszerkesztő a kódoláshoz, a .py vagy akármelyik más fajta script fájlokra bökve felhoz lehetőségeket, úgy mint terminálban futtatás, szerkesztés stb. A példa fájlok is nagyon jók. Meg a keret program is nagyon reszponzív és gyors.

Így végre van egy teljes értékű python a telómon, bármit le tudok programozni (pl. math library-val számítások, amik nincsenek meg a számológép progiban) és a sebessége is megfelelő számomra.

---
érdekesség képpen ezt még beírom; a hello world python-ban android modul felhasználásával így néz ki:

import android
droid = android.Android()
droid.makeToast('Hello, Android!')

ennyi ;)

Hozzászólások

És erre igaz, hogy amit Javaban azt ebben is meglehet írni?

megnéztem a python-os test példákat, volt benne fénykép készítés (tényleg csinált egy képet a python progi futtatásakor), menük megjelenítése, pop-up szövegek, infó ablakban szövegek, meg még egy rakás teszt futtatást csinált a terminálban. ahogy látom, elérhető vele sok funckió.

egy biztos, amire nekem kell, ahhoz tökéletes (főleg hogy tartalmazza az alap python modulokat, van sqlite stb.)

Ha van benne JRuby, akkor kiraly. Engem is erdekel az elerheto Java bindingek listaja (Google API pl.)
--


Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Ez tetszik. Az utolso dolog, ami visszatartott az Androidtol, az a Java. Igy mar csak Pythonul kell megtanulni hozza, de az megis emberibb nyelv.

--
Always remember - correlation does not imply causation.
Since realising this, my life has been so much better.

nekem nagyon megtetszett. egyszerűen felesleges energiát vesz el az embertől ha minél kevésbé olvasható a nyelv. és mivel nagyon jól kiegészíthető C-vel például is (meg egyébbel), ezért keret programot már nem szándékozok python-on kívül elkészíteni, a gyors motort meg lib-eket meg le kell kódolni gép közeli nyelvben és kész :)

egy érdekesség: egy egyszerű 3a+1-es ciklust mértem 60x lassabbnak pythonban C-hez képest ugyanazon a gépen, viszont 20x gyorsabbnak shell-hez képest. :) (persze baromság)

ugye dinamikus típusok vannak, nem kell típus konverzióval görcsölni, a list típus kurva jó, .append()-dal dinamikusan bővíthető és kereshető, tud large integer-t, csak a memória bírja ;) meg egyéb nyalánkságok.

egy sima while ciklusnál nem kell do és end tag vagy egyéb zárójel, csak mindig a bekezdés számít:


n = 1
while n<10:
  print n
  n += 1

innétől kezdve nem érdekel a többi nyelv ;) de nem akarok flame-et indítani, inkább csak leírom mi tetszik.

egyelőre az SL4A még alfa állapotú, de hiszem hogy nagy szüksége lenne rá sokaknak, gondolom hamar és sok kódot fognak belenyomni.

scripting nyelvek közül még ruby tetszik úgy ahogy.

szerk.: ja androidhoz még annyit, hogy igaz amit írnak, hogy nem annyira reszponzív, meg béta állapotúnak tűnik néhol kisebb hibákkal, de ezek mellett a market-tal egybevéve az első mobil eszközöm amit maximálisan kihasználok.

MEgkérdezhetem, hogy meglehet oldani valahogy,
hogy ne telon keljen legépelni, hanem pécén és
onnan kerüljön telora?

Jo lenne, igencsak erdekelne, csak nagyon sok helyet foglal..

Felraktam a SL4A-t+a Python for Android-ot, es ez elfoglalt majdnem 8 megat. Egy olyan rendszeren, ahol nem tudok a kartyara telepiteni, nekem ez mar nagyon soknak szamit. Plane, hogy nem tul sok program van telepitve jelenleg a keszulekre, es a szabad helyem atlagosan 18-20 mega korul van. Ugyhogy sajnos nekem szamit ez is. :(

Az SL4A hívhat tetszőleges számot, küldhet SMS-t, MMS-t.

Ha valaki tudja, írja le, hogy megéri-e ilyen áron felrakni.

Tud-e utána tetszőleges program 90-es számokat hívni,...

Az SL4A-t nem fogom felrakni, mert egy eszméletlen nagy biztonsági rés.

Ha felrakom mondjum a PERL-t SL4A alá, tetszőleges program minden jogot megkap a telefon felett.
Nem kell mást csinálni, csak gondolom "perl call.pl XY_PHONE_NUMNER".

Csomó alkalmazás van fenn a telefonomon, amiről financiám sincs, hogy mit csinálnak, a market-ről lettek letöltve.
Nem tudnak kárt tenni a telefonban, mert látom a permission-jeiket.

Az SL4A-t felrakva felismerhetik, hogy mely script van installálva, letöltik/elindítják a megfelelő rosszindulató kódot, én meg fizethetek.

Kinyitja az Android védelmi rendszerét, ezért ha SL4A van, akkor más alkalmazás már nem lehetne a telefonomon.

Ilyen feltételek mellett nincs az a pénz, hogy felrakjam.

Pont ezert mondom. Az SL4A onmagaban meg nem fog kart okozni, ergo ha csak ellenorzott scripteket toltesz fel es futtatsz, akkor gond egy szal se. Es erre mondtam, hogy kar, hogy az SL4A-n belul nincs olyan permission layer, ami tukrozne az Android permissionjeit.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Az SL4A biztonságos. A szerverhez csak egy AP_HANDSHAKE környezeti változó beállítása árán lehet kapcsolódni. Ezt az SL4A automatikusan megteszi, de terminálból hívva nem lesz beállítva, ergo nincs 90-es hívás véletlenül a tudtunk nélkül.

Kipróbáltam, kívülről nem ment.

Persze a netről letöltött fájlokat végig kell nézni indítás előtt, mert a saját hülyeségtől nem véd meg.