Skip to content

laspi94/expo-react-native

Repository files navigation

Leer con atención !!!

Instalación

Sigue estos pasos para instalar el proyecto en tu máquina local:

Al descargar el proyecto ejecutar

yarn install

luego instalar las dependencias de expo con

npx expo install

Nota: Solo utilizar "npm install" para paquetes específicos de documentaciones.

Instalar subsistema de windows para compilaciones locales, via powerShell con el comando

wsl --install

Luego seleccionamos "Ubuntu"

Instalar openjdk-17-jdk

sudo apt update

sudo apt install openjdk-17-jdk -y

En caso de que tengamos mas de una versión de JAVA instalados seleccionamos la instalada

sudo update-alternatives --config java

Añadimos las variables de entorno en nuesto ~/.bashrc

echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc

echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc

Aplicamos los cambios

source ~/.bashrc

Instalar los paquetes necesarios para compilar de forma local

En este link podrás encontrar los pasos que debes seguir para una correcta instalación

Install sdkmanager on Ubuntu

Nuestas variables de entorno deben quedar algo como esto en nuestro archivo .bashrc

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

export PATH=$JAVA_HOME/bin:$PATH

export ANDROID_SDK_ROOT=$HOME/android/sdk                 

export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin

export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools

Una ves culminado la instalación creamos el archivo local.properties

sdk.dir=/yout/own/path

.[!NOTE] NOTA: la variable "sdk.dir" debe tener acceso al path del SDK que se encuentra dentro de nuestro sub-sistema y no del que tenemos en windows.

Por último aceptamos las licencias con el comando

sdkmanager --licenses

Luego podemos proceder a realizar las compilación local de nuestro proyecto hecho en expo con el siguiente comando

Debemos tener intalado eas-cli, en caso de que no ejecutar el comando npm install -g eas-cli expo.dev

eas build --platform android --local

Para evitar crasheos en la compilación incrementar el gradle daemon memory

defect

org.gradle.jvmargs=-Xmx2024m -XX:MaxMetaspaceSize=512m

minimo recomendado

org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g

Comando para generar el .apk

eas build --platform android --local --clear-cache --output ./build/dev_artifacts

Pasos para generar el bundle de producción

Configuracion del eas.json para generar el .aab

"production-android": {
    "android": {
        "buildType": "app-bundle",
        "resourceClass": "large",
        "autoIncrement": "version"
    }
},

Generar la key para nuestra aplicación

sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

Añadir al gradle.properties la key generada

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Remplace el texto "// Top-level build file where you can add configuration options common to all sub-projects/modules." por la configuración del release

android {
  signingConfigs {
    // ...
   release {
    //  if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
        //  storeFile file(MYAPP_UPLOAD_STORE_FILE)
        //  storePassword MYAPP_UPLOAD_STORE_PASSWORD
        //  keyAlias MYAPP_UPLOAD_KEY_ALIAS
        //  keyPassword MYAPP_UPLOAD_KEY_PASSWORD
    //  }
    }
  }
  buildTypes {
    // ...
    release {
    //   signingConfig signingConfigs.debug
     signingConfig signingConfigs.release
      minifyEnabled false
      // ...
    }
  }
}

expo.dev ---> local-app-production guide

Comando para generar el .aab

eas build -p android --local --profile production-android --clear-cache --output ./build_artifacts

Implementación de FCM (FirebaseCloudMessaging)

Añadir estas líneas en nuestro pre-build

class MainActivity : ReactActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    // Set the theme to AppTheme BEFORE onCreate to support
    // coloring the background, status bar, and navigation bar.
    // This is required for expo-splash-screen.

    FirebaseApp.initializeApp(this); // añadir esta línea

    setTheme(R.style.AppTheme);
    super.onCreate(null)
  }

Añadir en Android/app/build.gradle
Ver en documentación oficial

dependencies {

    // The version of react-native is set by the React Native Gradle Plugin
    implementation("com.facebook.react:react-android")
    
    implementation "com.google.firebase:firebase-messaging"
    implementation platform('com.google.firebase:firebase-bom:33.4.0')
    implementation 'com.google.firebase:firebase-analytics'
    //buildscript somethings

    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath('com.google.gms:google-services:4.4.2')         // add this line
        classpath('com.android.tools.build:gradle')
        classpath('com.facebook.react:react-native-gradle-plugin')
        classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')
    }

    plugins {                                                           //
        id 'com.google.gms.google-services' version '4.4.2' apply false // add this line's
    }                                                                   //
}

Errores y sus posibles soluciones

  • AAPT: error: file failed to compile.

Un archivo jpg habia sido renombrado a formato png, no estaba siendo utilizado por el proyecto, se eliminó y se volvió a realizar el build del proyecto.

  • Execution failed for task ':app:createBundleReleaseJsAndAssets'.

Este error se debe a un error de syntaxis(Javascript/Typescript), a pesar de que la aplicación funciona es posible que el error se produzca en el momento de la compilación(build).

  • Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) PRODUCTION

Este error puede ocurrir por que hay archivos muy pesados para procesar en el proyecto, por que quedaron procesos en cache o por que se queda sin memoria(Gradle memory config ), posible solución es ejecutar wsl --shutdow para detener los procesos acumulados de nuestro wsl y verificar que la configuración "resourceClass": "large" se encuentre en eas.json

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors