Skip to content

ClassConnect-org/mobile-app

Repository files navigation

ClassConnect Mobile Application

Development Setup

Prerequisitos

  • Node.js (v18 or later)
  • JDK (Java Development Kit)
  • Android SDK

Configuración Previa

Tanto para generar el apk, como para lanzar la aplicación en android en modo development:

Si recien clonas el repositorio y no tiene instalado dependencias, el sdk de android o no tiene la carpeta de gradle bien formada, ejecuta primero:

Estos tres comandos en orden: ejecutar:

npm install expo
sudo apt install android-sdk
npx expo prebuild --clean

Luego (saltear si tienes las variables ya configuradas):

nano ~/.bashrc

añadir al final del archivo:

export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin

presiona CTRL + s presiona CTRL + x

y por último ejecutar:

source ~/.bashrc

Como lanzar la aplicación en modo debug con hot reaload

Documentacion oficial

npx expo install expo-dev-client

# Habilita el modo debugging USB en tu dispositivo android
# Asegurate de que al conectar el cable en el celular
# aparezca el cartel de permitir la conexión con la PC.

adb devices # muestra los dispositivos conectados, debería aparecer el celular conectado.

npx expo run:android

APK Export

  1. Generar una clave de firma (solo primera vez)

Android requiere que todas las APKs estén firmadas. Si ya tienes un keystore, omite este paso.

Ejecuta en la terminal:

keytool -genkeypair -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

my-release-key.keystore: Nombre del archivo de clave. my-key-alias: Alias de la clave (puedes cambiarlo). Te pedirá una contraseña, guárdala en un lugar seguro.

  1. Colocar el keystore en tu proyecto

Mueve el archivo my-release-key.keystore a la carpeta android/app/ de tu proyecto React Native.

  1. Configurar Gradle para usar la clave

Edita el archivo android/gradle.properties y agrega:

------- // esta parte ya deberia existir o por el estilo // --------

# Enable network inspector
EX_DEV_CLIENT_NETWORK_INSPECTOR=true

# Use legacy packaging to compress native libraries in the resulting APK.
expo.useLegacyPackaging=false

------- // CONFIGURACIÓN DEL KEYSTORE (AGREGAR ESTO AL FINAL), cambiar pass por contraseña configurada en la key // --------

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=pass
MYAPP_RELEASE_KEY_PASSWORD=pass
  1. Configurar build.gradle (app)

Edita android/app/build.gradle y asegúrate de que tenga:

android {
    ...
    signingConfigs {
        release {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
  1. Agregar en /mobile-app/android/app/src/main/AndroidManifest.xml

Agregar al final:

android:usesCleartextTraffic="true"

al final de:

<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true" android:usesCleartextTraffic="true" /* AQUI */>

Quedaría de la forma:

<application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme" android:supportsRtl="true" android:usesCleartextTraffic="true" android:usesCleartextTraffic="true">
  1. keys digitales en firebase

Dentro del keystore, el SHA-1/SHA-256 release no registrado en Firebase/Google Cloud. Cuando generas un APK firmado, la huella digital (SHA-1/SHA-256) cambia respecto al modo debug.

Primero debes:

Obtener el SHA-1/SHA-256 de tu keystore release con el comando:

keytool -list -v -keystore my-release-key.keystore -alias my-key-alias

Agrega estas huellas en Firebase Console:

Ve a tu proyecto > Configuración del proyecto > Huellas digitales de certificados de la app.

Si usas Google Sign-In directamente (sin Firebase), regístralas en Google Cloud Console.

  1. Generar el APK

Ejecuta en la terminal (desde la raíz del proyecto):

cd android && ./gradlew assembleRelease

En Windows usa gradlew assembleRelease (sin ./).

El APK se generará en: android/app/build/outputs/apk/release/app-release.apk.

Posible error en la aplicacion de la apk generada, necesitas la configuración necesaria de la librería Config para montar las variables del .env local.

Edita android/app/build.gradle y asegúrate de tener:

apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"

android {
    defaultConfig {
        manifestPlaceholders = [
            appAuthRedirectScheme: 'com.yourapp.bundleid'
        ]
        // Agrega esto:
        resValue "string", "build_config_package", "com.yourapp.bundleid"
    }
}

About

Main Mobile Frontend for the Class-Connect project

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages