SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
  1	
  
Creación de Extensiones Nativas(ANE) [iOS, Air]
	
  
La creación de extensiones nativas son fundamentales, mas que nada para el
buen funcionamiento de las aplicaciones desarrolladas con Adobe AIR(AS3).
Las "Apps" creadas con AIR carecen de muchas funcionalidades de las cuales le
dan un valor agregado a la aplicación, y para que el usuario tenga una
"Experiencia de usuario" muy buena, y este no note que la aplicación no esta
desarrollada con código nativo.
Las extensiones nativas(ANE) son una combinación de código Action
Script(AS3), Android y/ó Objective C, las cuales se comunican entre si, y de
este modo puedan ejecutarse funcionalidades que con ActionScript no es posible.
Ahora se mostrara paso por paso como se crean dichas extensiones:
NOTA: decidí que se empiece por objetive c para mejor explicación.
1) necesitamos tener instalado la ultima versión de XCode que en este caso es la
4.6.3
Ahora lo ejecutamos y aparecerá una ventana como la siguiente de la cual
seleccionamos la primer opción que es "Créate a new Xcode project".
Una vez que se muestra esta ventana en el menú que se encuentra de lado
izquierdo, seleccionamos iOS y dentro de esa opciones seleccionaremos
  2	
  
Framework & Library, se mostrara una opciones llamada Cocoa Touch Static
Library y Siguiente:
Ahora le daremos un nombre a nuestro proyecto que en este caso será
"SerialNumberLib", llenamos los demás campos en mi caso puse esos datos pero
pueden ponerlo como crean conveniente.
Una vez ya llenados estos campos presionamos "Next".
En la siguiente ventana se nos pediré la ubicación en donde queremos que se
guarde el proyecto, ya que se allá elegido la ubicación presionamos "Create".
  3	
  
Una vez creado el proyecto se abre el IDE en el cual podemos observar en el lado
izquierdo se muestra como esta organizado el proyecto en carpetas y las clases.
Ahora como se darán cuenta crea 2 archivos que es la interfaz(.h) donde se
declaran las variables, y en la implementación(.m) es en donde se utilizan los
métodos y variables declaradas en la interfaz.
Ahora la interfaz(.h) no la necesitaremos y la eliminaremos, pero la sustituiremos
con otra interfaz esta desarrollada por Adobe la cual se encuentra descargando el
SDK para Air mediante la siguiente liga http://www.adobe.com/devnet/air/air-sdk-
download.html.
Una vez descargado el SDK lo descomprimimos y en la carpeta include se
encuentra la interfaz que ocuparemos llamada FlashRuntimeExtensions.h, la
arrastraremos o copiamos dentro del proyecto. una ves hecho eso, en la
implementación se importa la interfaz añadida. El motivo por el cual se añadió
dicha interfaz, fue para poder comunicarse entre código Nativo y ActionScript.
El motivo del desarrollo de esta extensión nativa(ANE) fue para cubrir la necesidad
de obtener el numero serial del dispositivo y el UDID. Para obtener dicho numero
  4	
  
de serie, fue necesario recargar un método llamado UIDevice, el motivo de hacer
este paso, es que no se puede obtener directamente, para poder obtenerlo(el
numero de serial) se es necesario una librería llamada IOKit la cual no esta
disponible para iOS y solo para el desarrollo de aplicaciones de escritorio, es por
eso que se hace mediante código para poder llamar dicha librería.
Para esto se creara una clase que en mi caso llamare SerialLib, al momento de
crearla se crearan los 2 archivos por default(.h, .m).
Y la estructura de las carpetas y clases queda de la siguiente forma.
Al terminar de hacer los métodos correspondientes para el funcionamiento de las
clases se presiona Cmd+b para compilar, una ves hecho esto en la carpeta
Products se genera un archivo .a el cual ocuparemos en un momento mas
adelante.
Eso seria todo por parte en objective c ahora se explicara lo que se hace en
FlashBuilder.
Air
Ahora crearemos un proyecto en Flex con el cual se desarrollara la parte que se
comunicara con el código nativo creado previamente.
Abrimos nuestro IDE llamado FlashBuilder
  5	
  
Una vez cargado nuestro IDE crearemos un proyecto de tipo librería presionando
en el menú superior File/New/Flex Library Project.
Aparecerá la siguiente ventana en el cual pondremos el nombre de
nuestra librería que en este caso seria LibrarySerialDevice, lo demás lo dejamos
como esta y damos Finish.
  6	
  
ya creado nuestro proyecto, default viene sin clases que ejecutar, para esto
crearemos una clase la que llamaremos SerialNumberController.as.
NOTA: el código viene en el link de la descripción de este tutorial.
También crearemos 2 XML, ya que son necesarios para la comunicación entre
ambas librerías la primera la llamaremos extension.xml, y su estructura debe de
ser de la siguiente manera:
<extension	
  xmlns="http://ns.adobe.com/air/extension/3.8"]]	
  >	
  /**se	
  especificara	
  versión	
  del	
  SDK	
  de	
  
Air	
  se	
  compilo	
  la	
  libreria*/	
  	
  
	
  	
  	
  	
  <id]]	
  >	
  com.hovanetworks.serialnumber</id]]	
  >	
  /**Se	
  establece	
  un	
  ID	
  entre	
  el	
  XML	
  y	
  la	
  clase	
  de	
  
de	
  Air	
  (puede	
  ser	
  cual	
  sea)*/	
  	
  
	
  	
  	
  	
  <versionNumber]]	
  >	
  1</versionNumber]]	
  >	
  /**versión	
  que	
  tendra	
  el	
  .ANE	
  final*/	
  	
  
	
  	
  	
  	
  <platforms]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  <platform	
  name="iPhone-­‐ARM"]]	
  >	
  /**Plataformas	
  de	
  la	
  cuales	
  les	
  dara	
  soporte	
  el	
  ANE	
  
final(iOS,Android,Windows,Mac)*/	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <applicationDeployment]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <nativeLibrary]]	
  >	
  libSerialNumberLib.a</nativeLibrary]]	
  >	
  /**nombre	
  de	
  la	
  
extensión	
  generada	
  en	
  Objective	
  c*/	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <initializer]]	
  >	
  LNGenericANEInitializer</initializer]]	
  >	
  /**nombre	
  del	
  metodo	
  que	
  
se	
  iniciliazara	
  en	
  objective	
  c	
  (debe	
  de	
  ser	
  el	
  mismo	
  nombre)*/	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <finalizer]]	
  >	
  LNGenericANEFinalizer</finalizer]]	
  >	
  /**nombre	
  del	
  metodo	
  que	
  se	
  
finalizara	
  en	
  objective	
  c	
  */	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </applicationDeployment]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  </platform]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  <platform	
  name="default"]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <applicationDeployment/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  </platform]]	
  >	
  	
  	
  	
  	
  
	
  	
  	
  	
  </platforms]]	
  >	
  	
  
	
  
</extension]] >
Una vez puestos esos datos ahora se realizara el siguiente XML el que lleva por
nombre platformoptions.xml en donde se agregan las extensiones de terceros
que queramos utilizar, y de las cuales no incluyen en el SDK de iOS por default.
pero como no usamos ninguna otra librería de terceros para realizar este ANE solo
lleva la siguiente información.
<platform	
  xmlns="http://ns.adobe.com/air/extension/3.8"]]	
  >	
  /**se	
  especifica	
  la	
  versión	
  del	
  SDK	
  de	
  
Air	
  se	
  compilo	
  la	
  libreria*/	
  	
  
	
  	
  	
  	
  <sdkVersion]]	
  >	
  6.1.0</sdkVersion]]	
  >	
  /**versión	
  en	
  la	
  que	
  se	
  compilo	
  la	
  libreria	
  en	
  objective	
  
c*/	
  	
  
	
  	
  	
  	
  <linkerOptions]]	
  >	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  <option]]	
  >	
  -­‐ios_version_min	
  6.1</option]]	
  >	
  /**versión	
  minima	
  en	
  la	
  cual	
  funcionara	
  el	
  
ANE*/	
  	
  
	
  	
  	
  	
  </linkerOptions]]	
  >	
  	
  
</platform]]	
  >	
  	
  
  7	
  
Ya teniendo estos archivos y haber limpiado el código en FlashBuilder, en el
proyecto de la librería en la carpeta bin se crea un archivo .swc, que en ese
caso tendrá este nombre y extensión LibrarySerialDevice.swc.
A este archivo generado le cambiaremos el tipo de extensión a .ZIP, abrimos el zip
y dentro de ella se encuentran 2 archivos, el que necesitaremos será el
"library.swf", este archivo es necesario para poder crear el archivo .ane.
Después de haber creado los archivos necesarios para la creación de
nuestra extensión nativa (ANE) ahora pondremos en una carpeta en la cual deben
de organizarse de las siguiente manera:
NOTA: El nombre de las carpetas, xml's debe de ser el mismo como los que se
muestran(extensión, platformoptions).
Ya acomodados los archivos, ahora lo compilaremos mediante línea de
comandos usando "adt", este se encuentra en la carpeta bin del SDK de Air que
descargamos.
ahora se abrira una terminal y se hará ellos siguientes pasos.
primero verificaremos si tenemos instalado el adt tecleando:
adt	
  -­‐version	
  
si nos muestra el siguiente mensaje
-­‐bash:	
  adt:	
  command	
  not	
  found	
  
  8	
  
Se tendrá que re direccionar el PATH de la siguiente forma:
export	
  
PATH=$PATH:/Users/AngelVazquez/Downloads/AdobeAIRSDK/bin/:/Users/AngelVazquez/Ad
obeAIRSDK/android/tools	
  
	
  
NOTA: yo lo tengo de esta forma ya que allí es donde se encuentra el SDK que
descargue.
Volvemos a teclear el comando para ver la versión de "adt" y si es que se hizo de
buena manera aparecerá el numero de la versión del "adt"
3.8.0.910	
  	
  
Ahora nos dirigimos en donde se encuentra nuestros archivos ya
organizados(mediante la consola). Una vez ya estando dentro de la carpeta
ejecutaremos el siguiente comando, que es con el cual se generara el ANE
adt	
  -­‐package	
  -­‐target	
  ane	
  SerialNumber.ane	
  extension.xml	
  -­‐swc	
  
serialNumberDevice.swc	
  -­‐platform	
  iPhone-­‐ARM	
  -­‐C	
  ios	
  .	
  -­‐platformoptions	
  
platformoptions.xml	
  -­‐platform	
  default	
  -­‐C	
  default .
Ya creado el archivo .ane lo copiamos dentro de la carpeta de las "libs" del
proyecto en done lo ocuparemos, ahora lo importamos al proyecto en donde lo
utilizaremos, damos clic derecho sobre el proyecto "Properties" se abrirá un
ventana y se realizara lo siguiente:
  9	
  
Buscamos la ubicación de nuestra librería la seleccionamos y presionamos "ok"
una vez ya agregada presionamos ok para volver a la aplicación ahora si ya
podremos utilizarla, la forma de hacerlo es muy sencilla es de la siguiente manera
var	
  numSerial:String	
  =	
  SerialNumberController.instance.getSerial();	
  
De esta manera ya obtendremos el numero del serial de nuestro dispositivo iOS.
NOTA: Para poder comprobar que sirve nuestra librería se debe de
hacer directamente en el dispositivo físico ya que en el emulador de Air suele
"tronar".
El código esta disponible en la URL que se encuentra en la descripción de este
archivo.

Mais conteúdo relacionado

Mais procurados

Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos javamartaferrari
 
UDA-Plugin UDA. Guia de uso del plugin.
UDA-Plugin UDA. Guia de uso del plugin.UDA-Plugin UDA. Guia de uso del plugin.
UDA-Plugin UDA. Guia de uso del plugin.Ander Martinez
 
Manual codeblocks luis_ocampo
Manual codeblocks luis_ocampoManual codeblocks luis_ocampo
Manual codeblocks luis_ocampoluis_ocampo27
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipsejaquiiMc
 
Tutorial netbeans
Tutorial netbeansTutorial netbeans
Tutorial netbeansMarthaa Hdz
 
Presentación de eclipse(componentes básicos)
Presentación de eclipse(componentes básicos)Presentación de eclipse(componentes básicos)
Presentación de eclipse(componentes básicos)Esmedc20
 
Grado 11 b visual basic equipo Azul
Grado 11 b visual basic equipo Azul Grado 11 b visual basic equipo Azul
Grado 11 b visual basic equipo Azul Juan pablo Obregon
 
Manual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampoManual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampoluis_ocampo27
 
Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++Santiago Sarmiento
 
Mi primera-hora-con-eclipse
Mi primera-hora-con-eclipseMi primera-hora-con-eclipse
Mi primera-hora-con-eclipseariannalizeeth
 
Manual visualc
Manual visualcManual visualc
Manual visualcIsrael Mc
 
UDA-Plugin UDA. Guia de uso de plantillas
UDA-Plugin UDA. Guia de uso de plantillasUDA-Plugin UDA. Guia de uso de plantillas
UDA-Plugin UDA. Guia de uso de plantillasAnder Martinez
 
Tutorial de-codeblocks
Tutorial de-codeblocksTutorial de-codeblocks
Tutorial de-codeblocksMartinCetis109
 

Mais procurados (19)

File
FileFile
File
 
Eclipse para novatos java
Eclipse para novatos javaEclipse para novatos java
Eclipse para novatos java
 
UDA-Plugin UDA. Guia de uso del plugin.
UDA-Plugin UDA. Guia de uso del plugin.UDA-Plugin UDA. Guia de uso del plugin.
UDA-Plugin UDA. Guia de uso del plugin.
 
mysql y visual c++.pdf
mysql y visual c++.pdfmysql y visual c++.pdf
mysql y visual c++.pdf
 
Manual codeblocks luis_ocampo
Manual codeblocks luis_ocampoManual codeblocks luis_ocampo
Manual codeblocks luis_ocampo
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
Manual del uso de codeblocks
Manual del uso de codeblocksManual del uso de codeblocks
Manual del uso de codeblocks
 
Tutorial netbeans
Tutorial netbeansTutorial netbeans
Tutorial netbeans
 
Eclipse
EclipseEclipse
Eclipse
 
Presentación de eclipse(componentes básicos)
Presentación de eclipse(componentes básicos)Presentación de eclipse(componentes básicos)
Presentación de eclipse(componentes básicos)
 
Grado 11 b visual basic equipo Azul
Grado 11 b visual basic equipo Azul Grado 11 b visual basic equipo Azul
Grado 11 b visual basic equipo Azul
 
Manual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampoManual para visual_c_luis_ocampo
Manual para visual_c_luis_ocampo
 
Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++Manual Code::Blocks lenguaje C++
Manual Code::Blocks lenguaje C++
 
visual.basic
visual.basicvisual.basic
visual.basic
 
Mi primera-hora-con-eclipse
Mi primera-hora-con-eclipseMi primera-hora-con-eclipse
Mi primera-hora-con-eclipse
 
Manual visualc
Manual visualcManual visualc
Manual visualc
 
Eclipse 7u7r
Eclipse 7u7rEclipse 7u7r
Eclipse 7u7r
 
UDA-Plugin UDA. Guia de uso de plantillas
UDA-Plugin UDA. Guia de uso de plantillasUDA-Plugin UDA. Guia de uso de plantillas
UDA-Plugin UDA. Guia de uso de plantillas
 
Tutorial de-codeblocks
Tutorial de-codeblocksTutorial de-codeblocks
Tutorial de-codeblocks
 

Destaque

Extensiones nativas presentación
Extensiones nativas presentaciónExtensiones nativas presentación
Extensiones nativas presentaciónAngel Vazquez
 
Artecort cortinas en valencia
Artecort cortinas en valenciaArtecort cortinas en valencia
Artecort cortinas en valenciaArtecort
 
Fatigue testing of a composite propeller blade using fiber optic strain sensors
Fatigue testing of a composite propeller blade using fiber optic strain sensorsFatigue testing of a composite propeller blade using fiber optic strain sensors
Fatigue testing of a composite propeller blade using fiber optic strain sensorsPhuong Dx
 
SFAH_Aarbog_8_1978
SFAH_Aarbog_8_1978SFAH_Aarbog_8_1978
SFAH_Aarbog_8_1978SFAH
 
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESAS
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESASANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESAS
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESASCarlos Fernando Jung
 
Multisourcing the new model for multi vendor customer care
Multisourcing the new model for multi vendor customer careMultisourcing the new model for multi vendor customer care
Multisourcing the new model for multi vendor customer careSteve Chirokas
 
Malakocktail N°78
Malakocktail N°78Malakocktail N°78
Malakocktail N°78Malakocktail
 
Foreign trade 100415
Foreign trade 100415Foreign trade 100415
Foreign trade 100415Jigmee
 
El futbol es solo para hombres...
El futbol es solo para hombres...El futbol es solo para hombres...
El futbol es solo para hombres...Marc Robert
 
Rugby posadas misiones
Rugby posadas misionesRugby posadas misiones
Rugby posadas misionesNico Gomez
 
CV - Mir Adnan
CV - Mir AdnanCV - Mir Adnan
CV - Mir AdnanMir Adnan
 
Warc analysis cannes effectiveness lions 2012
Warc analysis cannes effectiveness lions 2012Warc analysis cannes effectiveness lions 2012
Warc analysis cannes effectiveness lions 2012Brian Crotty
 
Trius sept12confpresentation
Trius sept12confpresentationTrius sept12confpresentation
Trius sept12confpresentationCompany Spotlight
 
Catálogo Lingerie LODY
Catálogo Lingerie LODYCatálogo Lingerie LODY
Catálogo Lingerie LODYDIAFORA
 

Destaque (20)

Extensiones nativas presentación
Extensiones nativas presentaciónExtensiones nativas presentación
Extensiones nativas presentación
 
Artecort cortinas en valencia
Artecort cortinas en valenciaArtecort cortinas en valencia
Artecort cortinas en valencia
 
Brochure Curso - Taller BCM
Brochure Curso - Taller BCMBrochure Curso - Taller BCM
Brochure Curso - Taller BCM
 
Fatigue testing of a composite propeller blade using fiber optic strain sensors
Fatigue testing of a composite propeller blade using fiber optic strain sensorsFatigue testing of a composite propeller blade using fiber optic strain sensors
Fatigue testing of a composite propeller blade using fiber optic strain sensors
 
SFAH_Aarbog_8_1978
SFAH_Aarbog_8_1978SFAH_Aarbog_8_1978
SFAH_Aarbog_8_1978
 
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESAS
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESASANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESAS
ANÁLISE E SÍNTESE DE MODELOS PARA AVALIAÇÃO DA SUSTENTABILIDADE DE EMPRESAS
 
Agile Web Projects
Agile Web ProjectsAgile Web Projects
Agile Web Projects
 
Open Data
Open DataOpen Data
Open Data
 
Multisourcing the new model for multi vendor customer care
Multisourcing the new model for multi vendor customer careMultisourcing the new model for multi vendor customer care
Multisourcing the new model for multi vendor customer care
 
Malakocktail N°78
Malakocktail N°78Malakocktail N°78
Malakocktail N°78
 
Foreign trade 100415
Foreign trade 100415Foreign trade 100415
Foreign trade 100415
 
El futbol es solo para hombres...
El futbol es solo para hombres...El futbol es solo para hombres...
El futbol es solo para hombres...
 
Rugby posadas misiones
Rugby posadas misionesRugby posadas misiones
Rugby posadas misiones
 
Mode emploi Seevogh
Mode emploi SeevoghMode emploi Seevogh
Mode emploi Seevogh
 
Tecnologia Aplicadas a la Educacion
 Tecnologia Aplicadas  a la Educacion Tecnologia Aplicadas  a la Educacion
Tecnologia Aplicadas a la Educacion
 
CV - Mir Adnan
CV - Mir AdnanCV - Mir Adnan
CV - Mir Adnan
 
Uhmlg2011
Uhmlg2011Uhmlg2011
Uhmlg2011
 
Warc analysis cannes effectiveness lions 2012
Warc analysis cannes effectiveness lions 2012Warc analysis cannes effectiveness lions 2012
Warc analysis cannes effectiveness lions 2012
 
Trius sept12confpresentation
Trius sept12confpresentationTrius sept12confpresentation
Trius sept12confpresentation
 
Catálogo Lingerie LODY
Catálogo Lingerie LODYCatálogo Lingerie LODY
Catálogo Lingerie LODY
 

Semelhante a Creación de extensiones nativas

Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Como insertar una imagen
Como insertar una imagenComo insertar una imagen
Como insertar una imagenFANY_RDZ98
 
Curso de programación básico de android
Curso de programación básico de androidCurso de programación básico de android
Curso de programación básico de androidENANITOS120
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiFreelance
 
Manual_java.pdf
Manual_java.pdfManual_java.pdf
Manual_java.pdfAnaLpez275
 
Manual de android parte 1
Manual de android parte 1Manual de android parte 1
Manual de android parte 1ftriana5000
 
como insertar imagen a una aplicación android de java.
como insertar imagen a una aplicación android de java.como insertar imagen a una aplicación android de java.
como insertar imagen a una aplicación android de java.RosaCGlez
 
De los temas de android (introduccion-10)
De los temas de android (introduccion-10)De los temas de android (introduccion-10)
De los temas de android (introduccion-10)equipotresamp
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructurasFernand Bernowly
 
Adelanto de los temas de android (introduccion-10)
Adelanto de los temas de android (introduccion-10)Adelanto de los temas de android (introduccion-10)
Adelanto de los temas de android (introduccion-10)equipotresamp
 
Manos a la obra con java y eclipse.
Manos a la obra con java y eclipse.Manos a la obra con java y eclipse.
Manos a la obra con java y eclipse.grachika
 
Como operar con_code...
Como operar con_code...Como operar con_code...
Como operar con_code...Luis TC
 
Como operar con code...
Como operar con  code...Como operar con  code...
Como operar con code...Luis TC
 

Semelhante a Creación de extensiones nativas (20)

Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Como insertar una imagen
Como insertar una imagenComo insertar una imagen
Como insertar una imagen
 
Instalacion jdk
Instalacion jdkInstalacion jdk
Instalacion jdk
 
Como insertar una imagen
Como insertar una imagenComo insertar una imagen
Como insertar una imagen
 
Curso de programación básico de android
Curso de programación básico de androidCurso de programación básico de android
Curso de programación básico de android
 
Ingeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo iiIngeniería inversa básica en android tomo ii
Ingeniería inversa básica en android tomo ii
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Manual_java.pdf
Manual_java.pdfManual_java.pdf
Manual_java.pdf
 
Manual de android parte 1
Manual de android parte 1Manual de android parte 1
Manual de android parte 1
 
como insertar imagen a una aplicación android de java.
como insertar imagen a una aplicación android de java.como insertar imagen a una aplicación android de java.
como insertar imagen a una aplicación android de java.
 
De los temas de android (introduccion-10)
De los temas de android (introduccion-10)De los temas de android (introduccion-10)
De los temas de android (introduccion-10)
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructuras
 
Adelanto de los temas de android (introduccion-10)
Adelanto de los temas de android (introduccion-10)Adelanto de los temas de android (introduccion-10)
Adelanto de los temas de android (introduccion-10)
 
Clases de Programación Android
Clases de Programación AndroidClases de Programación Android
Clases de Programación Android
 
Resumen semana2
Resumen semana2Resumen semana2
Resumen semana2
 
Manos a la obra con java y eclipse.
Manos a la obra con java y eclipse.Manos a la obra con java y eclipse.
Manos a la obra con java y eclipse.
 
2 poo u1 1 Introduccion
2 poo u1 1 Introduccion2 poo u1 1 Introduccion
2 poo u1 1 Introduccion
 
Como operar con_code...
Como operar con_code...Como operar con_code...
Como operar con_code...
 
Como operar con code...
Como operar con  code...Como operar con  code...
Como operar con code...
 
Como operar con code...
Como operar con  code...Como operar con  code...
Como operar con code...
 

Mais de Angel Vazquez

Conceptos básicos en java
Conceptos básicos en javaConceptos básicos en java
Conceptos básicos en javaAngel Vazquez
 
Visualización de videos en el player nativo de android con Air
Visualización de videos en el player nativo de android con AirVisualización de videos en el player nativo de android con Air
Visualización de videos en el player nativo de android con AirAngel Vazquez
 
Pseudocodigo para soluciones de estadistica
Pseudocodigo para soluciones de estadisticaPseudocodigo para soluciones de estadistica
Pseudocodigo para soluciones de estadisticaAngel Vazquez
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQLAngel Vazquez
 
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...Angel Vazquez
 
Streaming de video implementando el protocolo RTMP y tecnologias Open Source
Streaming de video implementando el protocolo RTMP y tecnologias Open SourceStreaming de video implementando el protocolo RTMP y tecnologias Open Source
Streaming de video implementando el protocolo RTMP y tecnologias Open SourceAngel Vazquez
 

Mais de Angel Vazquez (7)

Beacons para Retail
Beacons para RetailBeacons para Retail
Beacons para Retail
 
Conceptos básicos en java
Conceptos básicos en javaConceptos básicos en java
Conceptos básicos en java
 
Visualización de videos en el player nativo de android con Air
Visualización de videos en el player nativo de android con AirVisualización de videos en el player nativo de android con Air
Visualización de videos en el player nativo de android con Air
 
Pseudocodigo para soluciones de estadistica
Pseudocodigo para soluciones de estadisticaPseudocodigo para soluciones de estadistica
Pseudocodigo para soluciones de estadistica
 
Fragmentación vertical - MySQL
Fragmentación vertical - MySQLFragmentación vertical - MySQL
Fragmentación vertical - MySQL
 
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...
Tesina Angel Vazquez - Streaming de Video implementando el protocolo RTMP y t...
 
Streaming de video implementando el protocolo RTMP y tecnologias Open Source
Streaming de video implementando el protocolo RTMP y tecnologias Open SourceStreaming de video implementando el protocolo RTMP y tecnologias Open Source
Streaming de video implementando el protocolo RTMP y tecnologias Open Source
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
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.pptxMiguelAtencio10
 
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 JUNITMaricarmen Sánchez Ruiz
 
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.pptxAlan779941
 
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.pdfvladimiroflores1
 
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 eyvanamcerpam
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
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 estossgonzalezp1
 
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 UninoveFagnerLisboa3
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
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
 
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
 
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
 
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
 
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
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
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
 

Creación de extensiones nativas

  • 1.   1   Creación de Extensiones Nativas(ANE) [iOS, Air]   La creación de extensiones nativas son fundamentales, mas que nada para el buen funcionamiento de las aplicaciones desarrolladas con Adobe AIR(AS3). Las "Apps" creadas con AIR carecen de muchas funcionalidades de las cuales le dan un valor agregado a la aplicación, y para que el usuario tenga una "Experiencia de usuario" muy buena, y este no note que la aplicación no esta desarrollada con código nativo. Las extensiones nativas(ANE) son una combinación de código Action Script(AS3), Android y/ó Objective C, las cuales se comunican entre si, y de este modo puedan ejecutarse funcionalidades que con ActionScript no es posible. Ahora se mostrara paso por paso como se crean dichas extensiones: NOTA: decidí que se empiece por objetive c para mejor explicación. 1) necesitamos tener instalado la ultima versión de XCode que en este caso es la 4.6.3 Ahora lo ejecutamos y aparecerá una ventana como la siguiente de la cual seleccionamos la primer opción que es "Créate a new Xcode project". Una vez que se muestra esta ventana en el menú que se encuentra de lado izquierdo, seleccionamos iOS y dentro de esa opciones seleccionaremos
  • 2.   2   Framework & Library, se mostrara una opciones llamada Cocoa Touch Static Library y Siguiente: Ahora le daremos un nombre a nuestro proyecto que en este caso será "SerialNumberLib", llenamos los demás campos en mi caso puse esos datos pero pueden ponerlo como crean conveniente. Una vez ya llenados estos campos presionamos "Next". En la siguiente ventana se nos pediré la ubicación en donde queremos que se guarde el proyecto, ya que se allá elegido la ubicación presionamos "Create".
  • 3.   3   Una vez creado el proyecto se abre el IDE en el cual podemos observar en el lado izquierdo se muestra como esta organizado el proyecto en carpetas y las clases. Ahora como se darán cuenta crea 2 archivos que es la interfaz(.h) donde se declaran las variables, y en la implementación(.m) es en donde se utilizan los métodos y variables declaradas en la interfaz. Ahora la interfaz(.h) no la necesitaremos y la eliminaremos, pero la sustituiremos con otra interfaz esta desarrollada por Adobe la cual se encuentra descargando el SDK para Air mediante la siguiente liga http://www.adobe.com/devnet/air/air-sdk- download.html. Una vez descargado el SDK lo descomprimimos y en la carpeta include se encuentra la interfaz que ocuparemos llamada FlashRuntimeExtensions.h, la arrastraremos o copiamos dentro del proyecto. una ves hecho eso, en la implementación se importa la interfaz añadida. El motivo por el cual se añadió dicha interfaz, fue para poder comunicarse entre código Nativo y ActionScript. El motivo del desarrollo de esta extensión nativa(ANE) fue para cubrir la necesidad de obtener el numero serial del dispositivo y el UDID. Para obtener dicho numero
  • 4.   4   de serie, fue necesario recargar un método llamado UIDevice, el motivo de hacer este paso, es que no se puede obtener directamente, para poder obtenerlo(el numero de serial) se es necesario una librería llamada IOKit la cual no esta disponible para iOS y solo para el desarrollo de aplicaciones de escritorio, es por eso que se hace mediante código para poder llamar dicha librería. Para esto se creara una clase que en mi caso llamare SerialLib, al momento de crearla se crearan los 2 archivos por default(.h, .m). Y la estructura de las carpetas y clases queda de la siguiente forma. Al terminar de hacer los métodos correspondientes para el funcionamiento de las clases se presiona Cmd+b para compilar, una ves hecho esto en la carpeta Products se genera un archivo .a el cual ocuparemos en un momento mas adelante. Eso seria todo por parte en objective c ahora se explicara lo que se hace en FlashBuilder. Air Ahora crearemos un proyecto en Flex con el cual se desarrollara la parte que se comunicara con el código nativo creado previamente. Abrimos nuestro IDE llamado FlashBuilder
  • 5.   5   Una vez cargado nuestro IDE crearemos un proyecto de tipo librería presionando en el menú superior File/New/Flex Library Project. Aparecerá la siguiente ventana en el cual pondremos el nombre de nuestra librería que en este caso seria LibrarySerialDevice, lo demás lo dejamos como esta y damos Finish.
  • 6.   6   ya creado nuestro proyecto, default viene sin clases que ejecutar, para esto crearemos una clase la que llamaremos SerialNumberController.as. NOTA: el código viene en el link de la descripción de este tutorial. También crearemos 2 XML, ya que son necesarios para la comunicación entre ambas librerías la primera la llamaremos extension.xml, y su estructura debe de ser de la siguiente manera: <extension  xmlns="http://ns.adobe.com/air/extension/3.8"]]  >  /**se  especificara  versión  del  SDK  de   Air  se  compilo  la  libreria*/            <id]]  >  com.hovanetworks.serialnumber</id]]  >  /**Se  establece  un  ID  entre  el  XML  y  la  clase  de   de  Air  (puede  ser  cual  sea)*/            <versionNumber]]  >  1</versionNumber]]  >  /**versión  que  tendra  el  .ANE  final*/            <platforms]]  >                    <platform  name="iPhone-­‐ARM"]]  >  /**Plataformas  de  la  cuales  les  dara  soporte  el  ANE   final(iOS,Android,Windows,Mac)*/                            <applicationDeployment]]  >                                    <nativeLibrary]]  >  libSerialNumberLib.a</nativeLibrary]]  >  /**nombre  de  la   extensión  generada  en  Objective  c*/                                    <initializer]]  >  LNGenericANEInitializer</initializer]]  >  /**nombre  del  metodo  que   se  iniciliazara  en  objective  c  (debe  de  ser  el  mismo  nombre)*/                                    <finalizer]]  >  LNGenericANEFinalizer</finalizer]]  >  /**nombre  del  metodo  que  se   finalizara  en  objective  c  */                            </applicationDeployment]]  >                    </platform]]  >                    <platform  name="default"]]  >                            <applicationDeployment/>                  </platform]]  >                  </platforms]]  >       </extension]] > Una vez puestos esos datos ahora se realizara el siguiente XML el que lleva por nombre platformoptions.xml en donde se agregan las extensiones de terceros que queramos utilizar, y de las cuales no incluyen en el SDK de iOS por default. pero como no usamos ninguna otra librería de terceros para realizar este ANE solo lleva la siguiente información. <platform  xmlns="http://ns.adobe.com/air/extension/3.8"]]  >  /**se  especifica  la  versión  del  SDK  de   Air  se  compilo  la  libreria*/            <sdkVersion]]  >  6.1.0</sdkVersion]]  >  /**versión  en  la  que  se  compilo  la  libreria  en  objective   c*/            <linkerOptions]]  >                    <option]]  >  -­‐ios_version_min  6.1</option]]  >  /**versión  minima  en  la  cual  funcionara  el   ANE*/            </linkerOptions]]  >     </platform]]  >    
  • 7.   7   Ya teniendo estos archivos y haber limpiado el código en FlashBuilder, en el proyecto de la librería en la carpeta bin se crea un archivo .swc, que en ese caso tendrá este nombre y extensión LibrarySerialDevice.swc. A este archivo generado le cambiaremos el tipo de extensión a .ZIP, abrimos el zip y dentro de ella se encuentran 2 archivos, el que necesitaremos será el "library.swf", este archivo es necesario para poder crear el archivo .ane. Después de haber creado los archivos necesarios para la creación de nuestra extensión nativa (ANE) ahora pondremos en una carpeta en la cual deben de organizarse de las siguiente manera: NOTA: El nombre de las carpetas, xml's debe de ser el mismo como los que se muestran(extensión, platformoptions). Ya acomodados los archivos, ahora lo compilaremos mediante línea de comandos usando "adt", este se encuentra en la carpeta bin del SDK de Air que descargamos. ahora se abrira una terminal y se hará ellos siguientes pasos. primero verificaremos si tenemos instalado el adt tecleando: adt  -­‐version   si nos muestra el siguiente mensaje -­‐bash:  adt:  command  not  found  
  • 8.   8   Se tendrá que re direccionar el PATH de la siguiente forma: export   PATH=$PATH:/Users/AngelVazquez/Downloads/AdobeAIRSDK/bin/:/Users/AngelVazquez/Ad obeAIRSDK/android/tools     NOTA: yo lo tengo de esta forma ya que allí es donde se encuentra el SDK que descargue. Volvemos a teclear el comando para ver la versión de "adt" y si es que se hizo de buena manera aparecerá el numero de la versión del "adt" 3.8.0.910     Ahora nos dirigimos en donde se encuentra nuestros archivos ya organizados(mediante la consola). Una vez ya estando dentro de la carpeta ejecutaremos el siguiente comando, que es con el cual se generara el ANE adt  -­‐package  -­‐target  ane  SerialNumber.ane  extension.xml  -­‐swc   serialNumberDevice.swc  -­‐platform  iPhone-­‐ARM  -­‐C  ios  .  -­‐platformoptions   platformoptions.xml  -­‐platform  default  -­‐C  default . Ya creado el archivo .ane lo copiamos dentro de la carpeta de las "libs" del proyecto en done lo ocuparemos, ahora lo importamos al proyecto en donde lo utilizaremos, damos clic derecho sobre el proyecto "Properties" se abrirá un ventana y se realizara lo siguiente:
  • 9.   9   Buscamos la ubicación de nuestra librería la seleccionamos y presionamos "ok" una vez ya agregada presionamos ok para volver a la aplicación ahora si ya podremos utilizarla, la forma de hacerlo es muy sencilla es de la siguiente manera var  numSerial:String  =  SerialNumberController.instance.getSerial();   De esta manera ya obtendremos el numero del serial de nuestro dispositivo iOS. NOTA: Para poder comprobar que sirve nuestra librería se debe de hacer directamente en el dispositivo físico ya que en el emulador de Air suele "tronar". El código esta disponible en la URL que se encuentra en la descripción de este archivo.