SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Ivan Mosquera <ivan@ivanmosquera.net>
PHP for Android: scripting PHP en Android
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
PHP for Android: scripting PHP en Android
Presentación
● http://www.slideshare.net/ivmos
● http://www.slideshare.net/irontec
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.
PHP for Android: scripting PHP en Android
Android
● OS móvil.
● Libre
● 200.000 activaciones/día.
● Hacia el tablet?
PHP for Android: scripting PHP en Android
Android
PHP for Android: scripting PHP en Android
Android
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)
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.
PHP for Android: scripting PHP en Android
El problema
● API php → OK
● UI? (php-gtk?)
● Llamar?
● Mensajes?
● Geolocalización?
● Sensores?
● ...
● Web móvil...
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.
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
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.
PHP for Android: scripting PHP en Android
APKs
● Dos APKs:
– SL4A
– PFA
● SL4A detecta
PFA con un
intent filter.
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
PHP for Android: scripting PHP en Android
SL4A
● Administración de scripts.
● Android Facades.
● Instalación intérpretes.
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)
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
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));
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
);
}
PHP for Android: scripting PHP en Android
La clase Android
<?php
require “Android.php”;
$droid = new Android();
$droid->viewContacts();
PHP for Android: scripting PHP en Android
Un ejemplo: script “DondeEstoy”
● Detectar geolocalización.
● Construir SMS || Email.
PHP for Android: scripting PHP en Android
Un ejemplo: script “DondeEstoy”
$droid->startLocating();
– Received: {"id":24,"method":"startLocating","params":[]}
– Sent: {"error":null,"id":24,"result":null}
$location = $droid->readLocation();
– Received: {"id":25,"method":"readLocation","params":[]}
– Sent: {"error":null,"id":25,"result":{"network":
{"provider":"network","time":1288215482448,"longitud
e":-
3.0339431,"latitude":43.3319985,"speed":0,"accuracy"
:76,"altitude":0}}}
PHP for Android: scripting PHP en Android
Un ejemplo: script “DondeEstoy”
$droid->stopLocating();
– Received: {"id":26,"method":"stopLocating","params":[]}
– Sent: {"error":null,"id":26,"result":null}
$longitude =
$location["result"]->network->longitude;
$latitude =
$location["result"]->network->latitude;
$mapLink = sprintf('http://maps.google.com/maps?
q=%s,%s', $latitude, $longitude);
PHP for Android: scripting PHP en Android
Un ejemplo: script “DondeEstoy”
$data .= "Google maps : $mapLink";
$droid->sendEmail('', 'Donde estoy', $data );
– Received: {"id":29,"method":"sendEmail","params":
["","Donde estoy","admin_area : Pau00eds Vasco
nfeature_name : 3 nsub_admin_area : Vizcaya
npostal_code : 48980 nlocality : Santurtzi
nthoroughfare : Calle del Puerto Pesquero
ncountry_code : ES ncountry_name : Espau00f1a
nnGoogle Maps: http://maps.google.com/maps?
q=13.3319985, 6.0339431"]}
– Sent: {"error":null,"id":29,"result":null}
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');
PHP for Android: scripting PHP en Android
PFAf
start
locate
credicts
info
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.
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
PHP for Android: scripting PHP en Android
Roadmap
● SL4A
– Ampliación API.
● GUI
– Estabilización.
● PFA
– Sqlite,... phpize.
– Siguiendo SL4A.
PHP for Android: scripting PHP en Android
?????
Ruegos y preguntas
Logo @Workoholics_

Mais conteúdo relacionado

Mais procurados

WeLoveJS 2014: Un paseo por FirefoxOS
WeLoveJS 2014: Un paseo por FirefoxOSWeLoveJS 2014: Un paseo por FirefoxOS
WeLoveJS 2014: Un paseo por FirefoxOS
Francisco Jordano
 

Mais procurados (13)

Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
Desarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.orgDesarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.org
 
¿Conoces swift?
¿Conoces swift?¿Conoces swift?
¿Conoces swift?
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDD
 
WeLoveJS 2014: Un paseo por FirefoxOS
WeLoveJS 2014: Un paseo por FirefoxOSWeLoveJS 2014: Un paseo por FirefoxOS
WeLoveJS 2014: Un paseo por FirefoxOS
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Primeros Pasos en PyQt4
Primeros Pasos en PyQt4Primeros Pasos en PyQt4
Primeros Pasos en PyQt4
 
ASP.NET 5 - DotNetters
ASP.NET 5 - DotNettersASP.NET 5 - DotNetters
ASP.NET 5 - DotNetters
 
Cómo contribuir en Proyectos de Código Abierto
Cómo contribuir en Proyectos de Código AbiertoCómo contribuir en Proyectos de Código Abierto
Cómo contribuir en Proyectos de Código Abierto
 

Semelhante a PHP for Android: scripting PHP en Android

Lima gtug startupandroidworkshopaol4
Lima gtug startupandroidworkshopaol4Lima gtug startupandroidworkshopaol4
Lima gtug startupandroidworkshopaol4
Lima GTUG
 
5 Ideas con Silverlight para tu Empresa
5 Ideas con Silverlight para tu Empresa5 Ideas con Silverlight para tu Empresa
5 Ideas con Silverlight para tu Empresa
Software Guru
 
Desarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con PythonDesarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con Python
Manuel Pérez
 

Semelhante a PHP for Android: scripting PHP en Android (20)

Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
Codemotion Madrid 2013 - [PHP] desarrollo de extensiones en c c++
 
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodanShodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
Shodan Tips and tricks. Automatiza y maximiza las búsquedas shodan
 
ADWA Desarrollo Web con Open Source
ADWA Desarrollo Web con Open SourceADWA Desarrollo Web con Open Source
ADWA Desarrollo Web con Open Source
 
Lima gtug startupandroidworkshopaol4
Lima gtug startupandroidworkshopaol4Lima gtug startupandroidworkshopaol4
Lima gtug startupandroidworkshopaol4
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamente
 
5 Ideas con Silverlight para tu Empresa
5 Ideas con Silverlight para tu Empresa5 Ideas con Silverlight para tu Empresa
5 Ideas con Silverlight para tu Empresa
 
Introduccion android
Introduccion androidIntroduccion android
Introduccion android
 
Api rest client en Android
Api rest client en AndroidApi rest client en Android
Api rest client en Android
 
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
Smad TI - Phonegap Aplicaciones Nativas Móviles con HTML5
 
Curso de programacion en android
Curso de programacion en androidCurso de programacion en android
Curso de programacion en android
 
Symfony Parte 3
Symfony Parte 3Symfony Parte 3
Symfony Parte 3
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Html 5
Html 5Html 5
Html 5
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Recursos open source y networking colaborativo
Recursos open source y networking colaborativoRecursos open source y networking colaborativo
Recursos open source y networking colaborativo
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Desarrollo de apps móviles desde cero
Desarrollo de apps móviles desde ceroDesarrollo de apps móviles desde cero
Desarrollo de apps móviles desde cero
 
Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2
 
Desarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con PythonDesarrollo de aplicaciones android con Python
Desarrollo de aplicaciones android con Python
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 

Mais de Irontec

Mais de Irontec (20)

Gestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoGestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajo
 
Sobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPSobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIP
 
Presente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderPresente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ Provider
 
Automated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCAutomated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTC
 
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
 
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
 
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / KamailioEscalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
 
VoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerVoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz provider
 
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
 
Comparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseComparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSense
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | Irontec
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y Asterisk
 
Curso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanCurso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: Dialplan
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIP
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzados
 
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraEuskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
 
Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6
 
Irontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IPIrontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IP
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (15)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 

PHP for Android: scripting PHP en Android

  • 1. Ivan Mosquera <ivan@ivanmosquera.net> PHP for Android: scripting PHP en Android
  • 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?
  • 6. PHP for Android: scripting PHP en Android Android
  • 7. PHP for Android: scripting PHP en Android Android
  • 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.
  • 23. PHP for Android: scripting PHP en Android Un ejemplo: script “DondeEstoy” $droid->startLocating(); – Received: {"id":24,"method":"startLocating","params":[]} – Sent: {"error":null,"id":24,"result":null} $location = $droid->readLocation(); – Received: {"id":25,"method":"readLocation","params":[]} – Sent: {"error":null,"id":25,"result":{"network": {"provider":"network","time":1288215482448,"longitud e":- 3.0339431,"latitude":43.3319985,"speed":0,"accuracy" :76,"altitude":0}}}
  • 24. PHP for Android: scripting PHP en Android Un ejemplo: script “DondeEstoy” $droid->stopLocating(); – Received: {"id":26,"method":"stopLocating","params":[]} – Sent: {"error":null,"id":26,"result":null} $longitude = $location["result"]->network->longitude; $latitude = $location["result"]->network->latitude; $mapLink = sprintf('http://maps.google.com/maps? q=%s,%s', $latitude, $longitude);
  • 25. PHP for Android: scripting PHP en Android Un ejemplo: script “DondeEstoy” $data .= "Google maps : $mapLink"; $droid->sendEmail('', 'Donde estoy', $data ); – Received: {"id":29,"method":"sendEmail","params": ["","Donde estoy","admin_area : Pau00eds Vasco nfeature_name : 3 nsub_admin_area : Vizcaya npostal_code : 48980 nlocality : Santurtzi nthoroughfare : Calle del Puerto Pesquero ncountry_code : ES ncountry_name : Espau00f1a nnGoogle Maps: http://maps.google.com/maps? q=13.3319985, 6.0339431"]} – Sent: {"error":null,"id":29,"result":null}
  • 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
  • 30. PHP for Android: scripting PHP en Android Roadmap ● SL4A – Ampliación API. ● GUI – Estabilización. ● PFA – Sqlite,... phpize. – Siguiendo SL4A.
  • 31. PHP for Android: scripting PHP en Android ????? Ruegos y preguntas Logo @Workoholics_