Este documento presenta PHP for Android, un proyecto que permite ejecutar scripts PHP en dispositivos Android. Explica cómo PHP puede compilarse para funcionar en Android y cómo la capa Scripting Layer for Android (SL4A) expone parte de la API de Android a lenguajes de scripting como PHP. También muestra un ejemplo de script PHP que detecta la ubicación del dispositivo y envía un correo electrónico con la información y un enlace a Maps.
2. PHP for Android: scripting PHP en Android
$self
● Iván Mosquera
– ZCE
– PHP, Java, C.
– Fundador proyecto PHP for Android.
– @ivmos
● Irontec
– Consultoría software libre.
– Desarrollo/Sistemas/VoIp/Formación.
– @irontec
3. PHP for Android: scripting PHP en Android
Presentación
● http://www.slideshare.net/ivmos
● http://www.slideshare.net/irontec
4. PHP for Android: scripting PHP en Android
Index
● Android.
– Introducción.
– Arquitectura.
● PHP en Android
● Compilación PHP.
● SL4A y PhpForAndroid.
● Ejemplo: script “DondeEstoy”.
– PFAf
● Desarrollo y distribución.
● Ruegos y preguntas.
5. PHP for Android: scripting PHP en Android
Android
● OS móvil.
● Libre
● 200.000 activaciones/día.
● Hacia el tablet?
8. PHP for Android: scripting PHP en Android
PHP en Android
● Android “es” Linux.
● php debería funcionar...
– Y claro que funciona.
● Compilación cruzada ARM.
● Método 1 (sencillo):
– Compilación estática gnu libc (> 7MB)
9. PHP for Android: scripting PHP en Android
PHP en Android
● Método no tan fácil:
– Linkado a bionic.
● Bionic: libc de Android
– BSD.
– sizeof(gnu_libc) * 0.5
– Ciertas carencias.
● PHP en Android.
– Php-cli sapi
– Agcc
– Tweaks por bionic.
– =~ 2MB
– Sockets, json.
10. PHP for Android: scripting PHP en Android
El problema
● API php → OK
● UI? (php-gtk?)
● Llamar?
● Mensajes?
● Geolocalización?
● Sensores?
● ...
● Web móvil...
11. PHP for Android: scripting PHP en Android
La solución
● Proyecto Google (Damon Kohler), libre.
● SL4A (Scripting Layer For Android) (antes ASE)
● Aplicación Android (APK).
● Capa intermedia para lenguajes scripting.
● Expone parte del API de Android.
● Muy activo, releases frecuentes.
12. PHP for Android: scripting PHP en Android
La solución
● Lenguajes soportados oficialmente:
– Python.
– Perl.
– Ruby.
– Lua...
● Cada intérprete → instalador APK.
● PHP? → incidencia #40 → phpforandroid.net
http://code.google.com/p/android-scripting/issues/detail?id=40
13. PHP for Android: scripting PHP en Android
The PFA project
● Http://www.phpforandroid.net
● @phpforandroid
● Soporte PHP a SL4A.
● Mantener APK.
● Mantener binario PHP para Android.
● Mantener framework.
● Comunidad, libre.
14. PHP for Android: scripting PHP en Android
APKs
● Dos APKs:
– SL4A
– PFA
● SL4A detecta
PFA con un
intent filter.
15. PHP for Android: scripting PHP en Android
PHP for Android
● Instalador:
– Binario PHP.
● php_rX.zip
– Scripts
● php_scripts_rX.zip
– Otros
● Android.php
● php.ini
● php_extras_rX.zip
16. PHP for Android: scripting PHP en Android
SL4A
● Administración de scripts.
● Android Facades.
● Instalación intérpretes.
17. PHP for Android: scripting PHP en Android
PHP for Android y SL4A
● 0.1 (ASE r26 unofficial, php 5.3.3rc2)
● 0.2 (SL4A_r0, php 5.3.3rc3)
● 0.3 (SL4A_r2+, php 5.3.3)
18. PHP for Android: scripting PHP en Android
La clase Android
<?php
include 'Android.php';
$droid = new Android();
public function __call($name, $args) {
return $this->rpc($name, $args);
}
Json RPC
19. PHP for Android: scripting PHP en Android
La clase Android
public function rpc($method, $args) {
$data = array(
'id'=>$this->_id,
'method'=>$method,
'params'=>$args
);
$request = json_encode($data) . “n”;
$sent = socket_write($this->_socket, $request,
strlen($request));
20. PHP for Android: scripting PHP en Android
La clase Android
$response = socket_read($this->_socket, 1024,
PHP_NORMAL_READ) or die("Could not read
inputn"); $this->_id++;
$result = json_decode($response);
return array ('id' => $result->id,
'result' => $result->result,
'error' => $result->error
);
}
21. PHP for Android: scripting PHP en Android
La clase Android
<?php
require “Android.php”;
$droid = new Android();
$droid->viewContacts();
22. PHP for Android: scripting PHP en Android
Un ejemplo: script “DondeEstoy”
● Detectar geolocalización.
● Construir SMS || Email.
26. PHP for Android: scripting PHP en Android
PFAf
● Maciej Wilgucki @wilgucki
● Framework incluido en PFA desde 0.3.
● Extender ScriptAbstract, implementar init.
● Organizar script como MAE (estados).
● Desde cada FooAction
– $this->setNextAction('bar');
27. PHP for Android: scripting PHP en Android
PFAf
start
locate
credicts
info
28. PHP for Android: scripting PHP en Android
Entorno desarrollo
● Desde SL4A...
– Emulador: adb.
● [allow_url_fopen, allow_url_include] → ON
– testnow.php
– testcache.php
● Ejecución remota.
29. PHP for Android: scripting PHP en Android
Distribución de scripts
● Carpeta scripts de SL4A.
● Barcode (<4296 chars)
● Script en APK:
– Parametrización proyecto Plantilla.
– ANT