1. Introducción
Crear una aplicación móvil puede parecer una tarea intimidante, pero es una de las experiencias más gratificantes para quienes buscan resolver problemas cotidianos con tecnología. En este caso, vamos a aprender cómo construir una aplicación desde cero que te ayudará a organizar tus listas de la compra. Si nunca has programado en Kotlin o no tienes experiencia con el desarrollo móvil, no te preocupes: iremos paso a paso, explicando cada concepto con detalle y desde la perspectiva de alguien que podría estar aprendiendo por primera vez. Además, también cubriremos cómo puedes publicar tu aplicación en Google Play para compartirla con el mundo.
Parte 1: Configurar el entorno de desarrollo en Ubuntu
1.1. Instalar Android Studio
Android Studio es el entorno de desarrollo integrado (IDE) oficial para desarrollar aplicaciones Android. Es una herramienta muy poderosa que incluye todo lo que necesitas: desde un editor de código inteligente hasta un simulador de dispositivos Android.
Paso 1: Actualizar el sistema operativo
Es importante asegurarte de que tu sistema operativo esté actualizado antes de comenzar. Abre una terminal (puedes buscarla en tu menú de aplicaciones si no está a la vista) y ejecuta los siguientes comandos:
sudo apt update && sudo apt upgrade
Esto descargará e instalará las últimas actualizaciones para los paquetes de tu sistema.
Paso 2: Descargar Android Studio
Visita la página oficial de Android Studio en https://developer.android.com/studio. En esta página, selecciona la versión para Linux y descarga el archivo comprimido (.tar.gz
).
Paso 3: Extraer el archivo descargado
Una vez que hayas descargado el archivo, abre la terminal y navega al directorio donde se descargó (generalmente es la carpeta Descargas
). Luego, ejecuta este comando para extraerlo:
tar -xvzf android-studio-*.tar.gz
El comando descomprimirá el archivo y creará una carpeta llamada android-studio
. Para facilitar el acceso, moveremos esta carpeta a /opt
, un directorio común para aplicaciones de usuario:
sudo mv android-studio /opt/
Paso 4: Ejecutar el instalador
Navega a la carpeta de Android Studio y ejecuta el archivo studio.sh
:
/opt/android-studio/bin/studio.sh
Esto abrirá el asistente de configuración de Android Studio. Sigue las instrucciones para descargar el SDK de Android, las herramientas de compilación y otros componentes necesarios. Este proceso puede tardar algunos minutos, así que ten paciencia.
1.2. Instalar Kotlin
Kotlin ya está integrado en Android Studio, por lo que no necesitas instalarlo manualmente. Este lenguaje moderno es oficial para el desarrollo de Android y ofrece una sintaxis más limpia y segura comparada con Java.
1.3. Configurar el emulador de Android
El emulador de Android te permite probar tu aplicación sin necesidad de un dispositivo físico. Para configurarlo:
- Abre Android Studio.
- Ve al menú Tools > AVD Manager (AVD significa «Android Virtual Device»).
- Haz clic en «Create Virtual Device» y selecciona un modelo de teléfono, como Pixel 5.
- Elige una versión de Android para el dispositivo virtual (recomendamos usar una versión reciente, como API nivel 30 o superior).
- Descarga la imagen del sistema correspondiente y configura el dispositivo virtual.
- Inicia el emulador para asegurarte de que funciona correctamente.
Pro Tip: Si el emulador es lento, puedes habilitar la virtualización de hardware en la BIOS de tu equipo para mejorar el rendimiento.
Parte 2: Diseño de la aplicación
2.1. Planificación de la funcionalidad
Antes de escribir una sola línea de código, es importante tener claro qué quieres que haga tu aplicación. En nuestro caso, la aplicación tendrá las siguientes características:
- Crear listas de la compra.
- Agregar, editar y eliminar elementos de la lista.
- Marcar elementos como comprados.
- Almacenar las listas localmente para que no se pierdan al cerrar la aplicación.
Este paso también te ayuda a definir las pantallas que necesitarás y la navegación entre ellas.
2.2. Estructura del proyecto
En Android Studio, la estructura del proyecto sigue un esquema predefinido. Esto es lo que verás al crear tu proyecto:
app/
├─ java/com.tu.nombredepaquete/ (código fuente Kotlin)
├─ res/ (recursos de la aplicación)
│ ├─ layout/ (archivos de diseño XML)
│ ├─ values/ (colores, cadenas, estilos)
Cada directorio tiene un propósito específico. Por ejemplo, la carpeta layout/
contiene los archivos que definen la interfaz de usuario, mientras que values/
almacena recursos reutilizables como colores y textos.
Parte 3: Desarrollo de la aplicación
3.1. Diseño de la interfaz de usuario (UI)
La interfaz de usuario es lo primero que verán los usuarios al abrir tu aplicación. Usaremos XML (eXtensible Markup Language) para definir el diseño visual de nuestras pantallas.
Abre el archivo activity_main.xml en la carpeta res/layout
y reemplaza el contenido con lo siguiente:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/inputItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Add an item" />
<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
</LinearLayout>
3.2. Añadir persistencia de datos con Room
Para que las listas se guarden incluso después de cerrar la aplicación, usaremos Room, una base de datos local. Sigue estos pasos:
- Añadir dependencias:
Abre el archivobuild.gradle
(app) y añade las siguientes líneas:
implementation "androidx.room:room-runtime:2.5.0"
kapt "androidx.room:room-compiler:2.5.0"
Asegúrate de que kapt
está habilitado. Si no, añádelo al inicio del archivo build.gradle
:
apply plugin: 'kotlin-kapt'
- Crear las entidades:
Una entidad es una tabla en la base de datos. En este caso, nuestra entidad será unShoppingItem
. Crea un archivo Kotlin llamadoShoppingItem.kt
:
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "shopping_items")
data class ShoppingItem(
@PrimaryKey(autoGenerate = true) val id: Int = 0,
val name: String,
val isChecked: Boolean = false
)
- Crear el DAO (Data Access Object):
Este archivo define cómo interactuar con la base de datos. Crea un archivo Kotlin llamadoShoppingDao.kt
:
import androidx.room.*
@Dao
interface ShoppingDao {
@Insert
suspend fun insertItem(item: ShoppingItem)
@Delete
suspend fun deleteItem(item: ShoppingItem)
@Query("SELECT * FROM shopping_items")
fun getAllItems(): LiveData<List<ShoppingItem>>
}
- Crear la base de datos:
Crea un archivo Kotlin llamadoShoppingDatabase.kt
:
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
@Database(entities = [ShoppingItem::class], version = 1)
abstract class ShoppingDatabase : RoomDatabase() {
abstract fun shoppingDao(): ShoppingDao
companion object {
@Volatile private var instance: ShoppingDatabase? = null
fun getDatabase(context: Context): ShoppingDatabase {
return instance ?: synchronized(this) {
instance ?: Room.databaseBuilder(
context.applicationContext,
ShoppingDatabase::class.java,
"shopping_database"
).build().also { instance = it }
}
}
}
}
- Actualizar
MainActivity
para usar Room: EnMainActivity.kt
, inicializa la base de datos y actualiza la lógica para leer y escribir elementos de la lista. Por ejemplo:
class MainActivity : AppCompatActivity() {
private lateinit var shoppingDatabase: ShoppingDatabase
private lateinit var shoppingAdapter: ShoppingListAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
shoppingDatabase = ShoppingDatabase.getDatabase(this)
shoppingAdapter = ShoppingListAdapter(mutableListOf())
recyclerView.adapter = shoppingAdapter
recyclerView.layoutManager = LinearLayoutManager(this)
shoppingDatabase.shoppingDao().getAllItems().observe(this) { items ->
shoppingAdapter.updateItems(items)
}
btnAdd.setOnClickListener {
val itemName = inputItem.text.toString()
if (itemName.isNotBlank()) {
val newItem = ShoppingItem(name = itemName)
GlobalScope.launch {
shoppingDatabase.shoppingDao().insertItem(newItem)
}
inputItem.text.clear()
}
}
}
}
Ahora, los elementos se guardarán en la base de datos y estarán disponibles incluso después de cerrar la aplicación.
Parte 4: Publicar la aplicación en Google Play
4.1. Configurar la cuenta de Google Play
Para publicar tu aplicación, necesitas una cuenta de desarrollador en Google Play Console. Esto cuesta una tarifa única de 25 USD. Una vez registrado, podrás subir todas las aplicaciones que desees.
Sigue aprendiendo con nosotros
Este es solo el inicio de un emocionante camino en el desarrollo de aplicaciones móviles. Te invitamos a seguir nuestras publicaciones para descubrir más tutoriales, consejos y trucos que te ayudarán a llevar tus habilidades al siguiente nivel. ¡Estamos aquí para acompañarte en cada paso del camino!