Comunidad N° 1 de Taringa a nivel global. Esta comunidad se basa en el sistema operativo Android, donde consultamos, aportamos, respondemos y aprendemos todo sobre este sistema. Por favor leer el Protocolo antes de crear un tema.
Ver más- 84,389 Miembros
- 41,333 Temas
- 29,424 Seguidores
[Tutorial]Desarrollando Aplicaciones para Android en Linux
Android: qué es?Android es un sistema operativo inicialmente desarrollado por Android Inc., una firma comprada por Google en el 2005.6 Android está basado en una versión modificada del Kernel de Linux.
Tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, existen cerca de 100.000 aplicaciones disponibles para Android.12 13 Android Market es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en Java
Estructura de una aplicación Android
La estructura de una aplicación Android está definida por la interacción de distintos componentes, haciendo énfasis en la "agrupación debil" de distintas piezas. La aplicación hará uso de las distintas APIs expuestas por Android, de forma que los componentes encargados de realizar cada tarea puedan ser manipulados o reemplazados sin problemas, asegurando la máxima flexibilidad. Por ejemplo, una aplicación puede permitir al usuario elegir fotos mediante el componente "Galería" o, por ejemplo, reemplazar esa "Galería" por una selección de fotos a través de un servicio online. Los principales componentes de una aplicación serían:
Activity
Representa cada una de las principales tareas que el usuario puede llevar a cabo en la aplicación. Típica (aunque no necesariamente) corresponderá a una pantalla específica de la aplicación y, también normalmente, una "activity" será el punto de entrada (pantalla inicial) de nuestra aplicación. Desde ella se invocarán las vistas, específicas o layouts, para la aplicación.
IntentReceiver
Permite a nuestra aplicación declarar ciertos "callbacks" que responderán a cambios en el estado del terminal. P.ej. llamada o email recibido, cambio en la geolocalización, etc.
Service
Una tarea que corre en el background y que puede y debe ejecutarse sin interacción con el usuario. Una aplicación puede mandar los mensajes necesarios a un determinado servicio activo.
ContentProvider
Establece una capa que permite a las distintas aplicaciones compartir datos. Con independencia del almacenamiento local que utilicen para sus propósitos, las aplicaciones necesitan declarar ContentProviders para poner a disposición de otros procesos los datos que consideren necesarios.
Estos son algunos de las principales, pero no las únicas piezas de construcción de la aplicación. También es interesante que se defina como pieza de primer nivel, el sistema de notificaciones en pantalla, que se recomienda como principal vía de comunicación con el usuario.
La construcción de una comunidad
Aunque algunos de las primeros ataques que sufrió Android tras su presentación fue la de ser sólamente "vaporware", o una mera "nota de prensa", no tardaron demasiado en aparecer los primeros productos tangibles de la iniciativa: sólo siete días después del anuncio oficial, Google liberó una versión preliminar de su SDK, consistente en ejemplos de código, documentación, un emulador de dispositivos con Android, diversas herramientas de debug y un plugin de desarrollo para Eclipse.
Al mismo tiempo que lanzaba el SDK, Google impulsaba una importante tarea de construcción de una comunidad articulada de evangelistas y desarrolladores: blogs, tutoriales, videos en Youtube que cumplen funciones tanto de creación de marca como pedagógicas. Como gran incentivo para aumentar la masa crítica de desarrolladores necesaria para hacer frente a comunidades más antiguas y numerosas, se creó la Android Developers Challenge que, desde principios de 2008, recompensará con 10 millones de dólares a los mejores proyectos para la plataforma, asegurándose así un poblado ecosistema de aplicaciones disponibles incluso antes de la aparición de los primeros dispositivos capaces de ejecutarlas.
Requisitos
-Android está hecho en Java+XML, por lo tanto saber se debe saber sobre ambos
-Java JDK
-SDK
-El mejor IDE para programar para Android es Eclipse (multiplataforma)
-plugin de Android para Eclipse (ADT).
Instalando Java JDK
Como Android está basado en Java, necesitamos tener instalado el Kit de desarrollo de java en la pc. Para ello descargue la última versión del JDK (versión adecuada a las características de su sistema operativo).
Descargar desde el sitio de Oracle
Usuario de ubuntu :
sudo aptitude install sun-java6-bin
además, si tu máquina es de 64 bits vas a necesitar las librerías de 32 bits ya que el SDK de Android está programado en 32 bits:
sudo aptitude install ia32-libs
Usuario de arch:
sudo yaourt -S jdk
Instalando SDK
Si sos usuario de arch yaourt -S android-sdk y listo
en ubuntu:
Descargar Bajamos la versión para linux y descomprimimos.
supongamos que nos quedo asi.. " /home/{usuario}/Desarrollo/android-sdk-linux_86"
Preparar Android SDK para la instalación
Antes de poder instalar nada tenemos que declarar el path para que el sistema encuentre los ejecutables. Para ello hay que editar el fichero .bashrc alojado en tu directorio home:
$ gedit ~/.bashrc
y agregar al final:
export PATH=${PATH}:/home/{usuario}/Desarrollo/android-sdk-linux_86/tools
Reemplazando {usuario} por tu nombre de usuario
luego podremos lanzarlo desde la terminal tecleando
android
Esto hará que se abra el manager de Android donde podremos instalar y actualizar el SDK así como crear dispositivos virtuales de pruebas, vamos a Available Packages y pulsamos Refresh para que nos aparezca la lista de paquetes que podemos instalar. Es importante que NO esté seleccionada la casilla Display update only ya que esta primera vez queremos instalarlo todo. Seleccionamos todos los paquetes y pulsamos Install Selected.
Entonces se abrirá una nueva ventana para aceptar las licencias de dichos paquetes. Seleccionamos Accept All y pulsamos Install Acepted.
Instalar Eclipse
ubuntu :
sudo apt-get install eclipse
arch :
sudo yaourt -S eclipse
Instalamos el ADT
Descargamos dentro de eclipse:
Help > Install New Software > Add
Seleccionamos Archive agregamos lo descargado y seguimos > Next > Next > Finish > Reiniciar Eclipse

Luego Windows -> Preferences > Android
y en SDK Location completamos con
/home/{usuario}/Desarrollo/android-sdk-linux_86
ahora nos dirigimos a el sdk:
en el presionamos "New"
podemos "encenderlo"(Tarda un buen rato en arrancar).
Creando un nuevo proyecto
La mejor forma de conocer un sistema es probándolo asi que vamos a crear el proyecto y por el camino vamos explicando cómo funciona Android.
File -> New -> Other -> Android -> Android Project
completemos como de esta manera:
Project name: HolaMundo
Package name: com.example.holamundo
Create Activity: HolaMundo
Application name: Hola Mundo
Aunque he puesto los mismos nombres en los 4 sitios no tiene por qué coincidir, como sabréis. El nombre de la aplicación es lo que veréis en el móvil, las actividades son los controladores de Android, el nombre del paquete es algo interno y el proyecto es lo que veréis en Eclipse. Finalizamos y podremos ver el siguiente árbol de archivos
la estructura:
/src – Aquí se encuentran las actividades (controladores recuerdo), clases y un archivo que se llama R.java. Este archivo no se debe tocar nunca, Android lo actualiza automáticamente pero si lo veis os encontraréis con variables y posiciones.
/Android Library – Eclipse referencia al sdk de Android. No mováis nunca el sdk de sitio o si lo hacéis recordad cambiar la dirección
/assets – Aquí se puede incluir archivos varios (música, pdfs, zips, rars)
/res/drawable – Todas las imágenes van en este directorio
/res/layout – Todas las vistas van aquí
/res/values – En el archivo strings.xml podemos poner variables que luego sustituiremos en las vistas
AndroidManifest.xml – Este archivo es muy importante porque recoge todas las actividades y algunas configuraciones del proyecto.
Vamos a ejecutar el proyecto, y para eso damos a Run As y elegimos Android Application. Si instalasteis todo bien saldrá el emulador, cargando iniciando Android (tarda un poquito). Lo desbloqueamos dando a Menú, y ya puedes ver la aplicación más básica que se hace en todos los lenguajes, nuestro Hola Mundo.
Creando Una aplicación un poco mas interesante
Ahora vamos a desarrollar un pequeño conversor de temperatura de Celsius a Fahrenheit y viceversa.
Lo siguiente es una traducción muy barata del siguiente artículo:
http://www.vogella.de/articles/Android/article.html
En el nombre del proyecto aparece "vogella" para no hacer las capturas de pantalla
nuevamente File -> New -> Other -> Android -> Android Project
una vez creado el proyecto nos dirigimos a string.xml ("res/values/string.xml" )
Presionamos "Add". seleccionamos "Color" en el nombre "myColor" y "#3399CC" de valor.
y agregamos de manera análoga a los siguientes, todos de tipo String:
nombre valor
buttonHandler myClickHandler
celsius to Celsius
fahrenheit to Fahrenheit
calc Calculate
nos debería quedar así:
o viendo el código:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Convert!</string>
<string name="app_name">Temperature Converter</string>
<color name="myColor">#3399CC</color>
<string name="buttonHandler">myClickHandler</string>
<string name="celsius">to Celsius</string>
<string name="fahrenheit">to Fahrenheit</string>
<string name="calc">Calculate</string>
</resources>
Vamos a agregar los elementos gráficos que nos servirán para la entrada y salida de datos:
Abrimos "res/layout/main.xml" presionamos en Graphical como bien muestra la imagen:
Eliminamos el "Hello Word" con el click derecho.
Agregamos en el diseño de un "EditText" luego "RadioGroup" (Solo sirve para agrupar no es ningun elemento visible) y luego dos componentes RadioButton y un "botón".
El xml les debe quedar si o si de esta manera:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:text="@+id/EditText01" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content"></EditText>
<RadioGroup android:id="@+id/RadioGroup01"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<RadioButton android:text="@+id/RadioButton01" android:id="@+id/RadioButton01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton>
<RadioButton android:text="@+id/RadioButton02" android:id="@+id/RadioButton02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton>
</RadioGroup>
<Button android:text="@+id/Button01" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
Una vez listo editamos las propiedades de cada elemento,
En el "EditText" cambiamos
Layout Width por fill_parent y en Input Type seleccionamos "numberSigned" y "number decimal"
Colocamos "celsius" en la propidad "text" del primer RadioButton y "Fahrenheit" a la segunda. Tambien ponemos en true la propiedad "Checked" del primer RadioButton.
Asignar "calc" en la propiedad de "text" del button y asignar a "buttonHandler" "onClick" .
Hacemos click en la ventana y editamos "background" colocando "@color/myColor"
En caso de que no entiendan copien y peguen el codigo en el xml.
El código les debe quedar de esta forma:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/myColor">
<EditText android:id="@+id/EditText01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:inputType="numberSigned|numberDecimal"></EditText>
<RadioGroup android:id="@+id/RadioGroup01"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<RadioButton android:id="@+id/RadioButton01"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/celsius" android:checked="true"></RadioButton>
<RadioButton android:id="@+id/RadioButton02"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/fahrenheit"></RadioButton>
</RadioGroup>
<Button android:id="@+id/Button01"
android:layout_height="wrap_content" android:onClick="@string/buttonHandler" android:layout_width="wrap_content" android:text="@string/calc"></Button>
</LinearLayout>
Ahora abrimos "Convert.java" y copia el siguiente código:
Lo dejo en pastebin para que se vea mejor: LINK
package de.vogella.android.temperature;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
public class Convert extends Activity {
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText) findViewById(R.id.EditText01);
}
// This method is called at button click because we assigned the name to the
// "On Click property" of the button
public void myClickHandler(View view) {
switch (view.getId()) {
case R.id.Button01:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.RadioButton01);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.RadioButton02);
if (text.getText().length() == 0) {
Toast.makeText(
this,
"Please enter a valid number", Toast.LENGTH_LONG).show();
return;
}
float inputValue = Float.parseFloat(text.getText().toString());
if (celsiusButton.isChecked()) {
text.setText(String
.valueOf(convertFahrenheitToCelcius(inputValue)));
} else {
text.setText(String
.valueOf(convertCelciusToFahrenheit(inputValue)));
}
// Switch to the other button
if (fahrenheitButton.isChecked()) {
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
} else {
fahrenheitButton.setChecked(true);
celsiusButton.setChecked(false);
}
break;
}
}
// Converts to celcius
private float convertFahrenheitToCelcius(float fahrenheit) {
return ((fahrenheit - 32) * 5 / 9);
}
// Converts to fahrenheit
private float convertCelciusToFahrenheit(float celsius) {
return ((celsius * 9) / 5) + 32;
}
}
Ahora ya esta listo!!! vamos al sdk iniciamos "la maquina/celular virtual" que creamos, esperamos que prenda y
Run-As-> Android Application
FUENTE1
FUENTE2
FUENTE3
FUENTE4
Mi post http://www.taringa.net/posts/linux/8270283/Desarrollando-Aplicaciones-para-Android-en-Linux.html
- 17Calificación
- 17Seguidores
- 3.912Visitas
- 11Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela

9 comentarios
PD: cambia el titulo "[Turorial]"
http://www.taringa.net/comunidades/soandroid/4670107/_Aporte_-Mi-App_-Ganancias-market-y-publicidad_.html