Estoy tratando de escribir una aplicación que use la API de AWS desde una aplicación de Android escrita en Java. Parece que la forma recomendada de hacerlo es usar un conjunto especial de bibliotecas llamado "Amplificar". Pude importar las clases apropiadas de Amplify Java en mi código, pero veo que no todos los parámetros que quiero proporcionar (como el depósito S3 o la clave de acceso API) se pueden proporcionar como argumentos de método.
Todos los consejos que veo en línea sugieren ejecutar un comando de configuración de línea de comandos usando npm install aws-amplify . Pero prefiero no usar una herramienta de línea de comandos que me hace preguntas: prefiero configurar todo en código. Y no quiero instalar npm ni perder el tiempo con él (divulgación completa, intenté instalarlo y tuve algunos problemas).
¿Hay alguna manera de proporcionar la configuración de Amplify sin usar la herramienta de línea de comandos, tal vez a través de un archivo de configuración o algunos argumentos adicionales a los métodos que estoy llamando dentro de Java?
¡Me lo imaginé!
Amplify.configure() tiene una sobrecarga no bien documentada en la que puede especificar un archivo de configuración en forma de "recurso" de Android.
Así que en lugar de usar
Amplify.configure(getApplicationContext());como se indica en los tutoriales, uso
Amplify.configure( AmplifyConfiguration.fromConfigFile(getApplicationContext(), R.raw.amplifyconfiguration), getApplicationContext()); El archivo de configuración debe ubicarse en la ruta app/src/main/res/raw/ del proyecto, denominada amplifyconfiguration.json . El entorno de desarrollo genera automáticamente la definición del valor R.raw.amplifyconfiguration , que es un número que identifica el archivo.
Eso resuelve el problema de cargar la configuración desde un archivo explícito, sin usar la CLI de amplificación. El siguiente obstáculo es averiguar qué claves se pueden especificar en el archivo...