RROLLO DE A
APLICACIONEES ANDROID
TTema 2
2
Esttructura de u
un Pro
oyecto Andro
oid
TEMA
A 2. ESTRUCTTURA DE UN PROYECTO A
ANDROID
Estrructura d
de un pro
oyecto An
ndroid
Cuando inicialmeente se crea a un proyeccto Android en Eclipse,, este entorrno de desa
arrollo
consttruye una esstructura de
e directorios básica, un esqueleto, que
q será com mún en todos los
proyeectos de estee tipo y que facilitará la oorganizaciónn de los distin
ntos archivoss que formarrán la
aplicaación.
ntinuación, se detalla el ccontenido dee las carpetas más imporrtantes.
A con
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 2
TEMA
A 2. ESTRUCTTURA DE UN PROYECTO A
ANDROID
Carpeeta libs
Contiiene libreríass externas a la API de An droid y que son utilizada
as por la apliccación.
Carpeeta src
Carpeeta gen
Esta carpeta con ntiene las clases Java qque crea auutomáticame ente el pluggin ADT, R.jjava y
BuilddVConfig.java a. La clase más
m importaante, que será actualiza ada automááticamente por p el
plugin ADT cada vvez que sea necesario, ees R.java. Diccha clase, que no ha de sser nunca ed ditada,
manttiene un índiice de recursos que son accesibles d desde la parrte de códigoo Java (clase es que
resideen en la cap peta res), asignándoles iddentificadores numérico os (por ejem plo, a caden nas de
textoo, cuyo valor podrá depender del idiooma mostrad do, o a comp ponentes grááficos, proveyyendo
la dirrección para acceder a un archivo dde imagen, a
a través de su identificaador, invocando a
“R.drrawable.nom mbreArchivoIm magen”).
Android x.y
Esta ccarpeta conttiene la referencia a la vversión de la SDK de And
droid con la ccual se compila la
aplicaación.
Carpeeta assets
En essta carpeta residirán tod dos aquelloss otros recursos de la aplicación
a a los cuales no
n sea
necessario accedeer a ellos a través
t de suu id ya que no
n se querrá
án modificarr en la aplicación,
tales como imágeenes, vídeos, audio, archiivos de fuentes de texto…
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 3
TEMA
A 2. ESTRUCTTURA DE UN PROYECTO A
ANDROID
Carpeeta bin
Contiiene los arch
hivos de la ap
plicación com
mpilados.
Carpeeta res
Carpeeta que juegga un importante papel en la estrucctura de las aplicacioness Android. En
E ella
resideen todos loss recursos acccesibles dessde la clase R R, organizados en difereentes subcarpetas.
Práctticamente cualquier
c applicación deebe provee er recursos alternativoos para sop portar
dispoositivos con diferentes configuracio
c nes. Se pueede proporciionar por ejjemplo diferrentes
recurrsos de tipo drawable (imágenes)
( ppara diferenntes densida ades de panntalla y diferrentes
conjuuntos de strinngs para los distintos idiiomas. Cuando la aplicacción se ejecuuta, Android carga
los reecursos más adecuados d disponibles een función de e la configuración del disspositivo.
Para organizar lo
os recursos de las difereentes configguraciones, de
d forma quue Android pueda
p
encon ntrarlos auto omáticamente, se debe respetar la siguiente sin ntaxis para laas supcarpettas de
la carrpeta “res”:
<nombre_de
< l_recurso><clasificador
< r>
Los recursos recu ursos alterna
ativos deberrán estar en las correspo ondientes caarpetas y deberán
tenerr todos exacttamente el m mismo nombbre que el re ecurso por de
efecto. Por eejemplo, si d dentro
de laa carpeta “values” está el recurso sstrings.xml que
q contiene e las cadenaas de texto en el
ma por defecto de la aplicación, laa carpeta “vvalues‐es” ta
idiom ambién conttendrá el re ecurso
stringgs.xml, pero con las cadenas de textto en castellano. Del missmo modo, een el caso d de una
imageen, se podrrán crear archivos de laa misma imagen en differentes res oluciones. Dichos
D
archivvos tendrán el mismo no ombre y se uubicarán en laas diferentess carpetas drrawable‐*.
Subcarpe etas drawab ble y drawaable‐*: contienen todoss los recursoos gráficos de la
aplicaciónn, pudiendo o organizarsee en funció ón de la ressolución y oorientación de la
pantalla sobre la que se ejecutaa la aplicación. De este e modo, si eel dispositivo
o que
ejecuta laa aplicación es tipo HD PI, se utilizaarán automááticamente l os recursos de la
carpeta drawable‐hd
d dpi¸ en caso de dispositivos LDPI, se e utilizarán llos recursos de la
carpeta drawable‐ldp
d pi, etc. Porr otro lado,, la Android d utilizará aaquellos reccursos
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 4
TEMA
A 2. ESTRUCTTURA DE UN PROYECTO A
ANDROID
Subcarpe
etas anim y
y anim‐*: coontendrá arcchivos xml de
d que definnen secuenciias de
animaciones.
Subcarpe
etas menu y y menu‐*: coontendrá loss archivos xm
ml que definnen los diferrentes
menús dee la aplicació
ón.
Ficheero AndroidM
Manifiest.xm
ml
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 5
TEMA ANDROID
A 2. ESTRUCTTURA DE UN PROYECTO A
Com
mponente
es de una
a aplicaciión Andrroid
Los componentess son las piezzas básicas ccon las que sse construye una aplicaciión Android.. Cada
compponente reprresenta una puerta diferrente a travé és de la cual el sistema ppuede intera
actuar
con laa aplicación y tiene un tipo de compoortamiento cconcreto.
Existeen cuatro tipos fundamentales de ccomponente es en las aplicaciones. CCada componente
tiene una funció ón distinta así
a como unn ciclo de viida distinto (que definee cómo se crea
c y
destrruye dicho co omponente).
Activvidades
Servicios
Un seervicio (clasee java que exxtiende a Serrvice) es un componentte que permiite ejecutar ttareas
en seegundo plano o de forma q que no se blloquee la intteracción del usuario co n la actividad que
esté eejecutándose en ese momento y perrmitiendo qu ue dichas tareas sigan ejeecutándose p pese a
que lla actividad haya finalizado. A diferrencia de las actividades, un serviciio no provee una
interffaz gráfica de usuario. Lo os servicios ppueden ser iiniciados porr otros compponentes quienes,
ademmás, podrán iinteractuar ccon los mism mos de diverssas formas.
Proveeedores de C
Contenido
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 6
A 2. ESTRUCTTURA DE UN PROYECTO A
TEMA ANDROID
otrass aplicaciones e, incluso, ser modificaados, siemprre y cuando el proveedoor de contennido lo
permmita (puede q que no se pe
ermita siquieera el acceso
o a dicha infformación y que simplem
mente
se utiilice el proveeedor como una interfaz para un alm
macén privado o de datos).
Receptores Broad
dcast
Por úúltimo, se ha de resaltaar una diferrencia en el diseño del sistema An droid respecto al
comp portamiento normal de a aplicaciones Java. Una ap plicación pue ede iniciar u n componen nte de
cualqquier otra ap plicación. De
e esta formaa, la aplicación que se desarrolle ppuede amplia ar sus
funcionalidades sin s tener qu ue implemenntar el códiggo que las realiza.
r Basttará con inicciar el
comp ponente adecuado de otra aplicaciónn. Una vez haaya realizado o la tarea sollicitada, devo olverá
la infformación a a la aplicación que lo ha invocad do. Para inicciar el com
mponente de e otra
aplicaación, el sisstema lanzarrá el processo de dichaa aplicación, instancianddo las clases que
necessite el comp ponente invocado. Debiido a las restricciones de d permisoss existentes en el
sistemma Android, y al ser dos procesos sseparados, realmente
r la aplicación no puede innvocar
directtamente al ccomponente de la otra a plicación, sin no que ha de e enviar un m mensaje al sisstema
que eespecifique su intención n (Intent) dde iniciar aqquel particular componeente y el sisstema
activaará dicho componente.
CURSSO DE DESAR
RROLLO DE A
APLICACIONEES ANDROID 7