Diferencia entre revisiones de «Prog Android Compilando diferentes versións»
| (No se muestran 6 ediciones intermedias de otro usuario) | |||
| Línea 20: | Línea 20: | ||
* Cando creamos unha aplicación, se definen unha serie de parámetros necesarios para identificala: | * Cando creamos unha aplicación, se definen unha serie de parámetros necesarios para identificala: | ||
| − | :* versionCode: '''Número integer''' que indica cando unha versión é máis nova que outra. O número máis alto indica versión superior. < | + | :* versionCode: '''Número integer''' que indica cando unha versión é máis nova que outra. O número máis alto indica versión superior. <u>Non é o número que se amosa ao usuario cando instalan a aplicación</u>. Cando subimos unha nova versión a Google Play, debemos de incrementar este valor. |
:* versionName: '''Cadea''' que se amosa ao usuario cando instala unha nova versión da aplicación. | :* versionName: '''Cadea''' que se amosa ao usuario cando instala unha nova versión da aplicación. | ||
:* package: Nome do paquete. Este nome serve: | :* package: Nome do paquete. Este nome serve: | ||
| Línea 43: | Línea 43: | ||
<br /> | <br /> | ||
| + | |||
=Flavors= | =Flavors= | ||
| Línea 55: | Línea 56: | ||
Image:PDM_flavors_3.jpg | Como vemos é aquí onde se garda o versionName e versionCode. O versionNameSuffix se engade ao versionName. | Image:PDM_flavors_3.jpg | Como vemos é aquí onde se garda o versionName e versionCode. O versionNameSuffix se engade ao versionName. | ||
Image:PDM_flavors_4.jpg | Os novos flavors se crean no arquivo '''build.gradle''' do módulo (neste caso app). No momento de escribir esta manual AndroidStudio informa que todos os flavors teñen que ter a mesma 'dimensión' e da un erro. Cada flavor-dimensión ben a ser unha forma de agrupar a diferentes sabores (flavors) baixo un mesmo nome. Quedará máis claro despois. Máis información [https://code.tutsplus.com/es/tutorials/using-gradle-build-variants--cms-25005 neste enlace]. | Image:PDM_flavors_4.jpg | Os novos flavors se crean no arquivo '''build.gradle''' do módulo (neste caso app). No momento de escribir esta manual AndroidStudio informa que todos os flavors teñen que ter a mesma 'dimensión' e da un erro. Cada flavor-dimensión ben a ser unha forma de agrupar a diferentes sabores (flavors) baixo un mesmo nome. Quedará máis claro despois. Máis información [https://code.tutsplus.com/es/tutorials/using-gradle-build-variants--cms-25005 neste enlace]. | ||
| − | Image:PDM_flavors_5.jpg | No exemplo | + | Image:PDM_flavors_5.jpg | No exemplo estamos a crear unha dimensión. No flavor de proba tamén facemos uso da variable [http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:versionNameSuffix versionNameSuffix] para asociarlle un sufixo ao nome así como tamén a [http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:applicationIdSuffix variable applicationIdSuffix] para asociarlle á applicationId. |
| − | Image: | + | Image:PDM_flavors_6.jpg | Podemos crear un novo 'flavor' que sexa a nosa aplicación final, sen ser de proba. Lembrar premer o enlace '''Sync''' na parte media-dereita do Android Studio. |
| − | + | Image:PDM_flavors_7.jpg | Agora se prememos en '''Build-Variants''' podemos ver as configuracións de execución creadas, dous por cada flavor (versión debug e versión release). | |
</gallery> | </gallery> | ||
| Línea 68: | Línea 69: | ||
| + | <br /> | ||
| + | * Agora que temos as configuracións creadas, como modifico eu a aplicación para que se adapte a cada unha das versións ? É dicir, imaxinemos que na de proba teño unha pantalla de publicidade que apareza ao principio...Como fago ? | ||
| + | * O comportamento é o mesmo ao xa visto coa [http://wiki.cifprodolfoucha.es/index.php?title=Internacionalizaci%C3%B3n internacionalización] pero aplicado aos flavors. | ||
| + | : Podemos aplicalo a layout´s, clases, values,....utilizando como diferencia o nome do flavor creado. | ||
| + | : Vexamos un exemplo: | ||
| + | <gallery caption="Utilizando flavors" widths="350" heights="300px" perrow="2"> | ||
| + | Image:PDM_flavors_8.jpg | Facendo uso da vista '''Proyects''' creamos unha estrutura de cartafoles por cada un dos flavors creados. Dentro de cada flavor creamos os cartafoles coas versións que queiramos sobrescribir (valen clases, arquivos recursos,...). | ||
| + | Image:PDM_flavors_8b.jpg | No exemplo se modifica o layout da activity principal indicando un texto específico para este flavor (isto non ten moito sentido, sería máis lóxico modificar o /res/strings.xml e poñer un texto diferente para a mesma etiqueta do layout, pero con isto sinalamos que podemos ter diferentes deseños,...). Debemos de escoller en 'Build variants' el flavor correspondente. | ||
| + | Image:PDM_flavors_9.jpg | Se executamos a aplicación aparece a mensaxe. | ||
| + | Image:PDM_flavors_10.jpg | A aplicación executada có outro flavor. | ||
| + | Image:PDM_flavors_11.jpg | Se nos conectamos a un shell do emulador podemos comprobar como están engadidos os sufixos de cada flavor ao identificar da aplicación. | ||
| + | </gallery> | ||
| + | * Máis exemplos [https://proandroiddev.com/advanced-android-flavors-part-2-enter-flavor-dimensions-4ad7f486f6 neste enlace] e [https://www.adictosaltrabajo.com/tutoriales/android-flavors/ neste outro]. | ||
| Línea 79: | Línea 93: | ||
| − | + | <br /> | |
| − | + | '''[https://wiki.cifprodolfoucha.es/index.php?title=Programaci%C3%B3n_de_dispositivos_m%C3%B3biles#UNIDADE_2:_A_interface_de_usuario. Enlace a la página principal de la UD2]''' | |
| − | + | <br /> | |
| − | + | <br /> | |
| − | + | '''[https://wiki.cifprodolfoucha.es/index.php?title=Programación_de_dispositivos_móbiles Enlace a la página principal del curso]''' | |
| + | <br /> | ||
Revisión actual del 13:00 21 nov 2020
Introdución
- Android Studio fai uso de Gradle, como xa comentamos na unidade 1.
- Este sistema de construción de aplicacións non so nos libra de xestionar as dependencias coas librerías e jar que poidamos necesitar para construír a nosa APK, seno que tamén deixa definir dunha forma moi sinxela diferentes versións dunha mesma aplicación, aproveitando todo o que sexa común delas.
- Un caso típico pode ser cando queremos ter unha versión dunha aplicación cun publicidade e outra sen ela.
- Máis información neste enlace.
Versións
- Máis información neste enlace.
- Cando creamos unha aplicación, se definen unha serie de parámetros necesarios para identificala:
- versionCode: Número integer que indica cando unha versión é máis nova que outra. O número máis alto indica versión superior. Non é o número que se amosa ao usuario cando instalan a aplicación. Cando subimos unha nova versión a Google Play, debemos de incrementar este valor.
- versionName: Cadea que se amosa ao usuario cando instala unha nova versión da aplicación.
- package: Nome do paquete. Este nome serve:
- É o espazo de nome asociado á clase R, de tal forma que dita clase (Clase R) terá de nome: nome_paquete.R
- Todas as 'activity' que se definan no 'AndroidManifiest.xml' da forma <activity android:name=".MainActivity">, terán asociado o nome do paquete para resolver o seu nome da forma: nome_paquete.MainActivity.
- Cando se instala unha aplicación nun dispositivo móbil, débese instalar nun cartafol único, non compartido por outra aplicación. Este cartafol está representado polo nome do paquete. Este debe ser único para poder subir a aplicación a Google Play. Veremos que o identificador da aplicación pode ser sobrescrito pola variable applicationId (o veremos na sección de flavors).
- Todos estos datos poden ir no arquivo AndroidManifiest.xml.
- A versionCode e versionName non obstante se definen no arquivo build.gradle do módulo, xa que desta forma podemos ter diferentes versión da mesma aplicación e probar a executalas.
- Podemos ver na imaxe o nome do paquete. O id da aplicación é collido de dito nome inicialmente, pero se garda nunha variable que pode ser cambiada independentemente do nome do paquete.
Flavors
- Os flavors (sabores) representan cada un dos tipos de aplicacións que queremos ter.
- Cando creamos un novo proxecto, créase un 'flavor por defecto' denominado defaultConfig. É neste flavor onde se garda o versionName e versionCode.
- Creando novos flavors
Os novos flavors se crean no arquivo build.gradle do módulo (neste caso app). No momento de escribir esta manual AndroidStudio informa que todos os flavors teñen que ter a mesma 'dimensión' e da un erro. Cada flavor-dimensión ben a ser unha forma de agrupar a diferentes sabores (flavors) baixo un mesmo nome. Quedará máis claro despois. Máis información neste enlace.
No exemplo estamos a crear unha dimensión. No flavor de proba tamén facemos uso da variable versionNameSuffix para asociarlle un sufixo ao nome así como tamén a variable applicationIdSuffix para asociarlle á applicationId.
- Máis información sobre como configurar o id da aplicación neste enlace.
- Máis información sobre os 'Test Intrumentation Runner' neste enlace.
- Agora que temos as configuracións creadas, como modifico eu a aplicación para que se adapte a cada unha das versións ? É dicir, imaxinemos que na de proba teño unha pantalla de publicidade que apareza ao principio...Como fago ?
- O comportamento é o mesmo ao xa visto coa internacionalización pero aplicado aos flavors.
- Podemos aplicalo a layout´s, clases, values,....utilizando como diferencia o nome do flavor creado.
- Vexamos un exemplo:
- Utilizando flavors
No exemplo se modifica o layout da activity principal indicando un texto específico para este flavor (isto non ten moito sentido, sería máis lóxico modificar o /res/strings.xml e poñer un texto diferente para a mesma etiqueta do layout, pero con isto sinalamos que podemos ter diferentes deseños,...). Debemos de escoller en 'Build variants' el flavor correspondente.
- Máis exemplos neste enlace e neste outro.
Enlace a la página principal de la UD2
Enlace a la página principal del curso
-- Ángel D. Fernández González -- (2018).