Diferencia entre revisiones de «PDM UD1 CoñecendoAndroidStudio»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 44 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
==Introdución==
 
==Introdución==
−
*Neste apartado vanse describir os cartafoles e ficheiros máis esenciais dos que se compón un proxecto Android.
+
*Neste apartado vanse describir os cartafoles e arquivos máis esenciais dos que se compón un proxecto Android.
−
*Comezaremos creando un proxecto: '''OlaMundo''', e estudaremos as partes nas que se divide.
+
*Comezaremos creando un proxecto que vai servir de base para desenvolver o curso.
 +
:Se o alumno quere pode crear un proxecto diferente por cada exercicio ou por cada unidade...
  
−
*Os proxectos vanse nomear e numerar da seguinte forma: '''U2_XX_NomeDaAplicación''', para facilitar o seguimento. Sendo '''U2''' a unidade 2 e '''XX''' o número de proxecto dentro da Unidade.
 
−
*Estes van estar no seguinte cartafol '''/ProxectosStudio/PlategaAndroid/Unidade2/<proxectos>'''
 
  
 +
<br />
 +
==Creando un proxecto Base==
  
−
==Crear un proxecto Android: OlaMundo==
+
 
−
<gallery caption="Ola Mundo" widths="350" heights="300px" perrow="2">
+
* En cada unidade imos crear un paquete diferente dentro do mesmo proxecto.
−
Image:PDM_Interface_1_.jpg| Comezamos creando un novo proxecto de Android.
+
: En cada paquete iremos poñendo as diferentes activities creadas.
−
Image:PDM_Interface_2_.jpg| O '''Nome da aplicación''' é o nome co que se vai mostrar a aplicación no dispositivo: '''U2_01_OlaMundo'''; '''Nome do paquete''' debe ser único para todo aplicación. Constrúese co nome do dominio ao revés, e o identificador da aplicación. Por exemplo se aplicación fose da Consellería de Educación o nome sería: es.xunta.edu.nome_aplicación. Neste caso deixouse o nome que xera por defecto; '''Localización do proxecto''' e o cartafol onde se vai xerar o proxecto.
+
 
−
Image:PDM_Interface_3_.jpg| Android Studio permite crear proxectos para todo tipo de dispositivos (reloxos, televisións,..) nos escolleremos a opción '''Phone and Tablets'''
+
 
−
Image:PDM_Interface_4_.jpg| Indicamos o tipo de Activity a crear. Podemos identificar unha activity cunha pantalla do proxecto (aínda que non sempre é así). Cun proxecto sempre se crea unha activity. Imos indicar que non teña nada escollendo a opción '''Empty Activity'''.
+
 
−
Image:PDM_Interface_5_.jpg| Como paso final indicamos o nome da activity e do seu layout (un layout ven ser a parte gráfica da activity, imos especificar a posición dos botóns, caixas de texto,...).  O layout soamente pode ter letras minúsculas, números e _. Desmarcaremos o check '''Backwards Compatibility'''. Isto fai que ao proxecto non se engada unha librería de compatibilidade. As librerías de compatibilidade son usadas por Android para que as novas funcionalidades que van aparecendo poidan ser utilizadas por versións anteriores. Máis información [https://developer.android.com/topic/libraries/support-library/features.html neste enlace]. Prememos o botón '''Finish'''.  
+
* Crea un novo proxecto:
−
Image:PDM_Interface_6_.jpg| Observar como o nome da clase Java garda relación co indicado na imaxe anterior.
+
:* Indicamos que imos desenvolver unha aplicación para móbil.
−
Image:PDM_Interface_7_.jpg| O mesmo acontece co ficheiro XML do layout.
+
:* Escollemos unha dos padróns. No exemplo será unha pantalla en branco.
−
Image:PDM_Interface_8_.jpg| Ficheiro XML que define o Layout e os elementos que o compoñen. Por agora ten unha etiqueta.
+
[[Imagen:PDM_Activity_17.jpg|500px|center]]
 +
 
 +
 
 +
:* Nome da aplicación: '''Aprendiendo'''.
 +
:* Nome do paquete: '''cursoandroid.cursoandroid.aprendiendo'''
 +
:* Cartafol onde se garda o proxecto: Podemos deixar o que trae por defecto.
 +
:* Language: '''Java'''
 +
:* Min API Level: 19
 +
:* <u>Marcaremos a opción de androidx</u> (non está marcada na imaxe)
 +
 
 +
[[Imagen:PDM_Activity_18.jpg|500px|center]]
 +
: Prememos o botón '''Finish'''.
 +
 
 +
 
 +
 
 +
<br />
 +
::'''NOTA:''' Se queredes desmarcar a última opción (androix) e non vos deixa quitala, unha vez creado o proxecto deberedes ir ao arquivo '''gradle.properties''' e cambiar as propiedades 'enableJetifier' e 'useAndroidX' a false. Unha vez cambiadas teredes que premer o enlace 'sync now' que aparece arriba á dereita.
 +
[[Imagen:PDM_Activity_18b.jpg|700px|center]]
 +
 
 +
:: <u>Tamén deberedes de borrar todas as bibliotecas de compatibilidade que sexan del tipo androix e que se atopan no arquivo build.gradle(nivel de Módulo)</u>
 +
:: Podedes consultar [https://developer.android.com/jetpack/androidx/migrate/artifact-mappings neste enlace] os 'implementation' específicos de androidx, pero se sabe facilmente  polo seu nome.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
<br />
 +
* Datos do arquivo '''build.gradle''' a nivel de módulo (pode ser que teñades outras versións dependendo da versión do Android Studio instalada):
 +
::* MinSDK: 19: '''É o que indicamos cando creamos o proxecto'''
 +
::* Target_SDK: 28
 +
::* Compile_SDK: 28
 +
 
 +
::* Build Toos: 28 (ou a que haia no momento de instalar o Android Studio)
 +
 
 +
: <u>Nota:</u> Explicaremos o significado [http://wiki.cifprodolfoucha.es/index.php?title=PDM_UD1_Co%C3%B1ecendoAndroidStudio#Identificar_o_minSDK.2C_targetSDK_e_buildSDK  posteriormente nesta mesma sección].
 +
 
 +
[[Imagen:PDM_Activity_0.jpg|500px|center]]
 +
 
 +
 
 +
 
 +
* Ao longo do curso, crearanse diferentes paquetes (ven ser como subdirectorios).
 +
: Vexamos un exemplo de como crear un novo paquete de nome '''tiposactivities'''' (é un exemplo)
 +
 
 +
: <u>Deixa a lo menos unha activity no paquete inicial, xa que se non a nivel gráfico o Android Studio o fai desaparecer.</u>
 +
 
 +
<gallery caption="Creando un novo paquete" widths="350" heights="300px" perrow="2">
 +
Image:PDM_Activity_12.jpg| Botón dereito sobre o paquete no que queremos crear un subpaquete.
 +
Image:PDM_Activity_13.jpg| Introducimos o nome do paquete a crear.
 
</gallery>
 
</gallery>
 +
 +
: Agora, premendo o botón dereito sobre o novo paquete podemos crear novas activities que irán nel.
 +
: En calquera momento podemos mover activities dun paquete a outro (arrastrando có rato) pero ao facelo aparecerá unha ventá na que teremos que escoller a opción '''Refactor'''.
 +
  
  
−
==Ficheiros do proxecto Android==
+
 
−
A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.
+
* Aínda que non está indicado nas diferentes activities creadas, cada vez que se cre <u>unha activity de tipo '''launcher'''</u> modificaremos o arquivo '''AndroidManifiest.xml''' para darlle un label a cada unha delas. O dato do label será o mesmo que o nome da activity. Isto o facemos para poder identificala dentro do emulador/dispositivo se imos á pantalla onde se ven todas as aplicacións instaladas:
−
===/src===
+
<syntaxhighlight lang="java" line highlight="2">
−
<gallery caption="/src" widths="350" heights="300px" perrow="2">
+
        <activity android:name=".UI.UD02_01_ConstraintLayout"
−
Image:Android_2013_U2_01_OlaMundo_16.jpg| '''Cartafol src''': contén o código fonte da aplicación, do interfaz gráfico, clases auxiliares. O código fonte asociado á actividade (Activity/Pantalla) principal da aplicación está dentro do paquete Java. Este código lanza a Pantalla Principal (Activity) e o Menú.
+
                  android:label="UD02_01_ConstraintLayout" >
−
Image:Android_2013_U2_01_OlaMundo_20.jpg| A clase '''U2_01_OlaMundo''' herda da clase '''Activity''' os seus atributos e métodos.<br> Neste caso sobrescríbese o método '''onCreate''', que é o primeiro que se executa cando se lanza unha Activity (ver imaxe superior dos estados dunha Activity). Este método recibe un parámetro de tipo '''Bundle''', no que recibe o estado da activity: <br>(-Null: porque acabamos de iniciala <br>-ou valores do estado anterior se vén de estar parada. Mirar imaxe superior do ciclo de vida).<br>Chama ao método '''onCreate''' da clase pai.<br>A continuación mostra en pantalla o contido do layout: '''activity_u2_01__ola_mundo'''. Para iso fai uso da clase R, como veremos a continuación.<br>http://developer.android.com/reference/android/os/Bundle.html<br>http://developer.android.com/reference/android/app/Activity.html#setContentView%28int%29
+
            <intent-filter>
 +
                <action android:name="android.intent.action.MAIN" />
 +
                <category android:name="android.intent.category.LAUNCHER" />
 +
            </intent-filter>
 +
        </activity>
 +
</syntaxhighlight>
 +
: Neste caso a activity está nun paquete de nome UI, pero o nome da activity é: UD02_01_ConstraintLayout
 +
 
 +
: Se executamos esta aplicación:
 +
<gallery caption="" widths="350" heights="300px" perrow="2">
 +
Image:PDM_Activity_27.jpg| Arrastramos o rato dende a parte baixa para amosar as aplicacións instaladas no emulador.
 +
Image:PDM_Activity_26.jpg| Aparece a aplicación instalada.
 
</gallery>
 
</gallery>
  
−
===/res===
 
−
'''Cartafol res''' (Resources/Recursos): almacena todos os ficheiros de recursos necesarios para a aplicación: imaxes, vídeos, ficheiros xml, animacións, ficheiros para a internacionalización, etc. 
 
  
−
<gallery caption="/res" widths="350" heights="300px" perrow="2">
+
<br />
−
Image:Android_2013_U2_01_OlaMundo_31.jpg| '''/res/drawable-X''': almacenan as imaxes da aplicación en función da densidade (dpi) do dispositivo de destino.
+
 
−
Image:Android_2013_U2_01_OlaMundo_32.jpg| '''/res/layout:''' almacena os ficheiros xml onde se definen as distintas pantallas (cos seus elementos) que compoñen a aplicación. Se creamos o cartafol '''/res/layout-land''' e para definir pantallas distintas en función da orientación do dispositivo.
+
==Nome das clases e layouts==
−
Image:Android_2013_U2_01_OlaMundo_33.jpg| Este é o contido do ficheiro xml do layout. Observar que hai unha serie de referencias a outros recursos (as que comezan por @: @dim/...  @string/...) (máis adiante veremos isto). Pero onde están definidas esas referencias ? ...
+
 
−
Image:Android_2013_U2_01_OlaMundo_34.jpg| '''/res/values''': contén constantes que define: cadeas de texto, estilos, cores, dimensións, etc.
+
<gallery caption="" widths="350" heights="300px" perrow="2">
−
Image:Android_2013_U2_01_OlaMundo_35.jpg| No ficheiro '''dimens.xml''' están declaradas as dimensións que se usaban no layout.
+
Image:PDM_Interface_9_.jpg| Como sucede en Java, o nome da clase pública debe corresponderse có nome físico do arquivo. Como vemos a clase deriva da clase AppCompactActivity, non da clase Activity. Anteriormente AndroidStudio deixaba indicar isto, pero agora non. Ao longo desta Wiki ides ver exemplos de código no que as activities derivan da clase Activity. Non faremos caso e faremos que todas as activities deriven de AppCompactActivity (lembrade cambialo).
−
Image:Android_2013_U2_01_OlaMundo_36.jpg| No ficheiro '''strings.xml''' están declaradas cadeas de texto. A última é usada no layout, logo veremos onde se usan as demais.
+
Image:PDM_Interface_10_.jpg| Se queremos cambiar o nome <u>non vale con só cambiar o nome da clase</u> xa que esta emprégase en outros sitios,como no AndroidManifiest.xml
−
Image:Android_2013_U2_01_OlaMundo_37.jpg| Neste ficheiro '''styles.xml''' definiranse os estilos que se usarán para homoxeneizar os elementos gráficos.
+
Image:PDM_Interface_11_.jpg| Prememos o botón dereito sobre o que queremos cambiar e escollemos a opción '''Refactor''' => '''Rename'''.
−
Image:Android_2013_U2_01_OlaMundo_49.jpg| '''/res/menu''' contén a definición dos menús da aplicación.
+
Image:PDM_Interface_12.jpg| O layout é onde se atopan os compoñentes gráficos da activity seguindo unha distribución. Podemos acceder premendo a tecla Control e premendo có rato no nome do layout...
−
Image:Android_2013_U2_01_OlaMundo_54.jpg| Aquí vemos no dispositivo como se acceden a eses menús.
+
Image:PDM_Interface_13.jpg| Ou podemos ir ao cartafol res => layout e premer dúas veces có rato sobre o mesmo.  
−
Image:Android_2013_U2_01_OlaMundo_38.jpg| Estes catro cartafoles serven para definir valores específicos para dispositivos que teñen versións de Android iguais ou superiores ás asociadas á API11 ou API14. Sobre os outros dous cartafoles seguro que atopas información en internet. 
+
Image:PDM_Interface_14.jpg| Para cambiar o nome faremos o mesmo que no caso da clase
 
</gallery>
 
</gallery>
  
−
===/gen===
+
 
−
O cartafol '''/gen''' contén codigo Java creado automaticamente ao compilar a aplicación. O ficheiro máis importante é '''R.java'''.  
+
 
−
<gallery caption="/res" widths="350" heights="300px" perrow="2">
+
<br />
−
Image:Android_2013_U2_01_OlaMundo_21.jpg| O ficheiro '''R.java''' define a clase R que serve de enlace entre os recursos creados en /res e o código Java da aplicación. Para iso, a clase R contén constantes cos '''IDs''' dos recursos de '''/res'''. Este ficheiro é xerado cada vez que se compila co cal se modifica manualmente perderanse os cambios na próxima compilación.
+
 
−
Image:Android_2013_U2_01_OlaMundo_22.jpg| Por exemplo, podemos ver que para o layout definido en /res, nun ficheiro xml, existe unha constante que nos permite acceder dende Java ao layout a través desa constante como se pode ver ...
+
==Cartafoles nun proxecto Android==
−
Image:Android_2013_U2_01_OlaMundo_20.jpg| ... no código fonte asociado á Actividade que lanza a aplicación.
+
A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.
 +
 
 +
===/app/===
 +
 
 +
* É o nome do módulo da aplicación.
 +
* Un módulo ven ser un conxunto de arquivos dunha aplicación (activities, layouts,...) e arquivos de configuración do Android Studio e da aplicación.
 +
* Un módulo pode depender doutro para a súa execución ou poden ser totalmente independentes.
 +
* Por defecto, cando creamos un proxecto AndroidStudio, crea un módulo de nome 'app'.
 +
 
 +
Máis información [https://developer.android.com/studio/projects/index.html neste enlace].
 +
 
 +
===/app/java===
 +
 
 +
<u>Nota:</u> Ven ser no que en Eclipse era /src/. Veremos mais adiante que podemos cambiar a 'vista' de como se visualiza o proxecto e volver a ter o cartafol /src/.
 +
 
 +
<gallery caption="/App/Java" widths="350" heights="300px" perrow="2">
 +
Image:PDM_UD1_Estrutura_1.jpg| Contén o código fonte da aplicación, do interfaz gráfico, clases auxiliares. O código fonte asociado á actividade (Activity/Pantalla) principal da aplicación está dentro do paquete Java. Este código lanza a Pantalla Principal (Activity) e o Menú.
 +
Image:PDM_UD1_Estrutura_2.jpg| A clase '''U2_01_OlaMundo''' herda da clase '''Activity''' os seus atributos e métodos.<br> Neste caso sobrescríbese o método '''onCreate''', que é o primeiro que se executa cando se lanza unha Activity (ver [http://wiki.cifprodolfoucha.es/index.php?title=Ficheiros_e_cartafoles_dun_proxecto_Android:_Ola_Mundo._Activities,_Layouts_e_M%C3%BAltiples_pantallas#Activities estados dunha Activity]). Este método recibe un parámetro de tipo '''Bundle''', no que recibe o estado da activity: <br>(-Null: porque acabamos de iniciala <br>-ou valores do estado anterior se vén de estar parada. Mirar imaxe superior do ciclo de vida).<br>Chama ao método '''onCreate''' da clase pai.<br>A continuación mostra en pantalla o contido do layout: '''activity_u2_01__ola_mundo'''. Para iso fai uso da clase R, como veremos a continuación.<br>http://developer.android.com/reference/android/os/Bundle.html<br>http://developer.android.com/reference/android/app/Activity.html#setContentView%28int%29
 
</gallery>
 
</gallery>
 +
 +
===/app/res===
 +
 +
* '''Cartafol /app/res''' (Resources/Recursos): almacena todos os ficheiros de recursos necesarios para a aplicación: imaxes, vídeos, ficheiros xml, animacións, ficheiros para a internacionalización, etc. 
 +
 +
* <u>'''Importante:'''</u> Todo o que se atopa dentro do cartafol /res/ ten que ter letras minúsculas e só poden conter letras, números e _ .Se se pon outro carácter o proxecto dará un erro de compilación.
 +
 +
 +
 +
[[Imagen:PDM_UD1_Estrutura_3.jpg|400px|center]]
 +
 +
 +
:* /app/res/drawble: Almacena as imaxes da aplicación en función da densidade (dpi) do dispositivo de destino. En Android veremos que podemos ter diferentes resolucións de imaxes para que a aplicación se vexa correctamente en dispositivos de tamaños e resolucións diferentes. Estas imaxes gardaríanse dentro dun cartafol de nome 'drawble-sufixo' no que o sufixo indicará con un código a que tipo de dispositivo debe cargarse as imaxes que estean dentro do cartafol. Por exemplo, o cartafol '/res/drawable-large' tería imaxes que se cargaría con dispositivo de entre 4 e 7 polgadas aproximadamente (observar [https://developer.android.com/images/screens_support/screens-ranges.png imaxe]).
 +
 +
:* /app/res/layout: Almacena os ficheiros xml onde se definen os elementos gráficos e a súa disposisición, das distintas pantallas que compoñen a aplicación. Igual que no caso anterior tamén imos poder ter diferentes sufixos para cargar layouts en función dos dispositivos. Así, por exemplo, se creamos o cartafol '''/app/res/layout-land''' cargaríamos os layouts que estean dentro deste cartafol cando teñamos o dispositivo en posición 'apaisada', é dicir, tumbado.
 +
 +
:* /app/res/mipmap: Almacena a icona que vai representar a aplicación cando estea instalada nun dispositivo. Ven ser a icona de lanzamento. Pódese ver na imaxe que indica que hai 5 iconas. Isto é así xa que crea unha por cada tipo de densidade. A densidade a veremos máis adiante pero ven ser o número de puntos por pulgada que ten o dispositivo. Fisicamente temos un cartafol por cada unha das densidades e dentro de cada cartafol temos o arquivo a cargar, o que pasa que AndroidStudio oculta os cartafoles. Podemos ver ese cartafoles se cambiamos a vista a 'Proyect' como veremos posteriormente.
 +
 +
:* /app/res/values: Almacena constantes que definen: cadeas de texto, estilos, cores, dimensións, etc.
 +
 +
::*'''dimens.xml''' Están declaradas as dimensións que se usaban no layout.
 +
::*'''strings.xml''' Están declaradas cadeas de texto. A última é usada no layout, logo veremos onde se usan as demais.
 +
::*'''colors.xml''' Están declaradas constantes que representar unha cor.
 +
::*'''styles.xml''' Están declaradas constantes que representan estilos (como se van representar os elementos gráficos e as activities, como podan ser a combinación de cores, negrilla, cursiva, se vai ter menú,...)
 +
 +
* Hai máis arquivos e cartafoles para xa o iremos vendo.
 +
 +
<u>Nota:</u> Todos son arquivos de configuración son XML que poden ser editados. Máis información [https://developer.android.com/guide/topics/resources/providing-resources.html neste enlace].
  
 
===/assets===
 
===/assets===
−
*Contén o resto de ficheiros que se precisen para a aplicación: ficheiros de configuración, de datos, etc. Para acceder a estes recursos non se fai a a través da clase R senón que a través da súa ruta no sistema
 
−
[[Image:Android_2013_U2_01_OlaMundo_25.jpg]]
 
  
 +
* Contén o resto de ficheiros que se precisen para a aplicación: ficheiros de configuración, de datos, bases de datos,etc... Para acceder a estes recursos non se fai a a través da clase R senón que se fai a través da súa ruta no sistema.
 +
 +
* No Android Studio o cartafol 'assets' non se atopa creado por defecto. Para crealo temos que ir ao módulo /app/ e premendo o botón dereito escoller a opción New => Folder => Assets Folder como se va na seguinte imaxe:
 +
 +
[[Imagen:PDM_UD1_Estrutura_4.jpg|center|400px]]
 +
 +
 +
===Arquivo AndroidManifest.xml===
 +
 +
*Contén a definición das características máis importantes da aplicación: nome, versión, icona, activities, servizos, instrumentación, permisos de acceso aos recursos, etc.
 +
 +
[[Imagen:PDM_UD1_Estrutura_5.jpg|center|400px]]
 +
 +
* Na imaxe se pode ver entre outros datos:
 +
:* Nome da icona a cargar (fai referencia a unha icona que se atopa en /app/res/mipmaps/
 +
:: Podemos crear novas seguindo [https://wiki.cifprodolfoucha.es/index.php?title=PDM_Image_Asset_Studio este entrada da Wiki].
 +
:* Nome da aplicación que está definido nunha constante no arquivo /res/values/strings.xml. Ven ser o nome que aparece asociado a icona da aplicación.
 +
:* O aspecto que vai ter a aplicación (ven ser coma un arquivo CSS de HTML). Se atopa no arquivo /res/values/styles.xml.
 +
:* As activities que conforman o proxecto. Inicialmente so temos unha.
 +
 +
===Identificar o minSDK, targetSDK e buildSDK===
 +
 +
* Anteriormente en Eclipse, dentro do arquivo AndroidManifest.xml tamén ían as liñas que indicaban o '''targetSDK''' e '''minSDK'''.
 +
: Estes conceptos (polo menos un deles) o vimos no proceso de [http://wiki.cifprodolfoucha.es/index.php?title=PDM_UD1_Co%C3%B1ecendoAndroidStudio#Crear_un_proxecto_Android:_OlaMundo creación do proxecto Ola Mundo]. Se vos fixaches no paso un, indicabamos o minSDK no que ía funcionar a nosa aplicación.
 +
 +
 +
* Como comentamos anteriormente, a API vai determinar a versión do S.O. no que imos desenvolver a aplicación.
 +
: Cada nova versión incorpora novos compoñentes gráficos e novas funcionalidades, pero temos que manter un equilibrio entre a versión a escoller e o[http://wiki.cifprodolfoucha.es/index.php?title=Introduci%C3%B3n_a_Android:_Versi%C3%B3ns,_APIS_e_SDK#Versi.C3.B3ns_e_APIS  mercado que queiramos acaparar].
 +
 +
* A API tamén vai determinar que aplicacións poden ser instaladas no dispositivo móbil, xa que unha aplicación desenvolvida para unha versión superior non pode ser instalada nun S.O. Android cunha versión inferior.
 +
 +
* Á hora de determinar a API nun proxecto Android teremos que escoller o seguinte:
 +
:* '''MIN SDK''': Será a API mínima (versión do S.O. Android) no que a nosa aplicación poderá funcionar. Non se poderá instalar nunha versión anterior.
 +
:* '''TARGET SDK''': Indica que versión do S.O. Android no que está probada a nosa aplicación e sabemos que funciona correctamente. Normalmente ponse a máis alta. Podería funcionar nunha versión posterior ou inferior (sempre que sexa maior que o minSdk). O uso dun target ou outro pode influír no aspecto da nosa aplicación en tempo de execución (por exemplo, pode cambiar o theme ou aspecto por defecto, en función do target)
 +
:* '''BUILD SDK ou Compile SDK''': Indica a versión do SDK que utilizamos para compilar a nosa aplicación. Isto vai limitar os recursos que podamos empregar no desenvolvemento da aplicación, xa que se por exemplo, temos unha nova funcionalidade nun API por exemplo, na API 22, e nos temos marcado un BUILD_SDK de 19, non poderemos facer uso del. O build_sdk sempre terá que ser maior o igual ao min_sdk.
 +
 +
: Normalmente se segue a regra: minSdkVersion (mínima posible) <= targetSdkVersion == compileSdkVersion (máis alta posible SDK)
 +
 +
 +
<gallery caption="Especificando a API dun proxecto Android" widths="350" heights="300px" perrow="2">
 +
Image:PDM_AndroidStudio_Prox_API_1.jpg| En la barra de tarefas escollemos a opción '''Project Structure'''.
 +
Image:PDM_AndroidStudio_Prox_API_2.jpg| Tamén podemos ir dende o menú principal ou coa combinación de teclas indicada.
 +
Image:PDM_AndroidStudio_Prox_API_3.jpg| Debemos escoller o '''módulo App''' e na lapela '''Properties''' temos o <u>BUILD SDK</u>. Deberemos asegurarnos de que estea tamén seleccionado un '''build-tools''', normalmente a última versión.
 +
Image:PDM_AndroidStudio_Prox_API_4.jpg| Na lapela '''Default Config''' temos a <u>MIN SDK e TARGET SDK</u>.
 +
Image:PDM_AndroidStudio_Prox_API_4B.jpg| Estes cambios son reflectidos no arquivo '''build.gradle''' a nivel de módulo.
 +
</gallery>
 +
 +
 +
<u>Nota:</u> Estes datos se poden definir no arquivo '''AndroidManifiest.xml''', pero se están nos dous sitios, terá preferencia (sobreescribe) o que se atope no arquivo '''build.gradle'''.
 +
 +
<br />
 +
 +
==Cambiando o tipo de vista no Android Studio==
 +
 +
* En Android Studio podemos cambiar como visualizamos o proxecto da Aplicación.
 +
* Inicialmente estamos na vista Android, pero podemos cambiar a calquera outra premendo no combo indicado na seguinte imaxe:
 +
 +
[[Imagen:PDM_UD1_Estrutura_6.jpg|center|400px]]
 +
 +
 +
Por exemplo, dentro da vista '''Proyect''' podemos ter acceso a outros cartafoles interesantes:
  
−
===/bin===
+
===/generated===
−
*Unha vez que se compila a aplicación xerase o '''apk''' da aplicación para poder ser instalada nun dispositivo.
 
  
−
<gallery caption="/bin" widths="350" heights="300px" perrow="2">
 
  
−
Image:Android_2013_U2_01_OlaMundo_26.jpg| Antes de compilar non hai '''apk'''.
+
 
−
Image:Android_2013_U2_01_OlaMundo_27.jpg| Compilamos, lanzando a aplicación como unha Aplicación Android.
+
<gallery caption="Cartafol generated" widths="350" heights="300px" perrow="2">
−
Image:Android_2013_U2_01_OlaMundo_28.jpg| Lanzando a aplicación
+
Image:PDM_UD1_Estrutura_10.jpg | Dentro do cartafol '''/generetad''' atópase o código Java creado automaticamente ao compilar a aplicación. O ficheiro máis importante é '''R.java'''.  
−
Image:Android_2013_U2_01_OlaMundo_29.jpg| O ficheiro '''apk''' que permite instalar a aplicación nun dispositivo e que Eclipse o fai por nós.
+
Image:PDM_UD1_Estrutura_10B.jpg | A partires de Android Studio 3.6 a clase R.java deixa de estar accesible e o plugin gradle xera automaticamente a clase compilada coma R.class dentro do arquivo R.jar
 
</gallery>
 
</gallery>
  
−
===Ficheiro AndroidManifest.xml===
 
−
*Contén a definición das características máis importantes da aplicación: nome, versión, icono, activities, servizos, instrumentación, permisos de acceso aos recursos, etc.
 
  
−
<gallery caption="AndroidManifest.xml" widths="350" heights="300px" perrow="2">
+
<br />
−
Image:Android_2013_U2_01_OlaMundo_39.jpg| Facemos dobre click nel e vemos a lapela '''Manifest'''
+
* Esta clase é compilada cada vez que modificamos algo no cartafol /app/res. O que fai e asinar a cada recurso que se atopa en /res/ un identificador. Desa forma imos poder referencialos na programación polo seu nome.
−
Image:Android_2013_U2_01_OlaMundo_41.jpg| Maximizámola ...
+
 
−
Image:Android_2013_U2_01_OlaMundo_42.jpg| Vemos os SDK mínimo e obxectivo. Se o desexamos agora podemos cambiar eses valores. '''Edición 2015''': lembrar que o SDK mínimo é o 16.
+
* Neste exemplo se pode ver como dálle un id ao layout e na clase R xera automaticamente unha entrada para ese id asinándolle un número.
−
Image:Android_2013_U2_01_OlaMundo_43.jpg| Na lapela '''Application''' indicamos o tema, o nome da aplicación e a icona a usar. Observar que son referencias a outros recursos (@.../...). Poderíamos ir aos ficheiros ou cartafoles correspondentes de /res e mirar cal vai ser o seu valor.
+
 
−
Image:Android_2013_U2_01_OlaMundo_44.jpg| Non hai ningún permiso definido por defecto.
+
<gallery widths="350" heights="300px" perrow="2">
−
Image:Android_2013_U2_01_OlaMundo_45.jpg| Esta aplicación tampouco ten definida ningunha instrumentación do dispositivo para ser usada por ela.
+
Image:PDM_UD1_Estrutura_11.jpg
−
Image:Android_2013_U2_01_OlaMundo_46.jpg| Todo o anterior, pero en formato xml editable.
+
Image:PDM_UD1_Estrutura_12.jpg|  
−
Image:Android_2013_U2_01_OlaMundo_47.jpg| Podemos ver os SDKs mínimo e obxectivo ('''Edición 2015:''' lembrar SDK mínimo, como mínimo o 16), a icona que se vai usar para a aplicación, (foi o que escollemos cando a creamos, está accesible a través dunha referencia a un recurso), o nome da aplicación e o tema a usar. Revisar o ficheiro strings.xml de /res/values. Finalmente está a lista de activities que ten a aplicación, neste caso unha soa, a principal.
 
 
</gallery>
 
</gallery>
 +
 +
===/ouputs===
 +
 +
* Unha vez que se compila e se constrúe (build) a aplicación xérase o '''apk''' da aplicación para poder ser instalada nun dispositivo. O apk ven ser un exe dun computador con sistema operativo Windows.
 +
 +
[[Imagen:PDM_UD1_Estrutura_13.jpg|center|400px]]
 +
 +
 +
* Para poder xerar o apk hai que, ou ven executar o proxecto para que xere o apk e o instale nun dispositivo ou simplemente xerar o apk:
 +
 +
[[Imagen:PDM_UD1_Estrutura_14.jpg|center|400px]]
 +
 +
 +
 +
* Por defecto xera unha versión da aplicación para 'probas', ou en modo 'depuración'. Xa veremos máis adiante como facer que xere un apk para distribuír, na [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Empaquetado_e_distribuci%C3%B3n sección de Empaquetado e distribución].
 +
  
 
*Referencias:
 
*Referencias:
 
**http://developer.android.com/guide/topics/manifest/manifest-intro.html
 
**http://developer.android.com/guide/topics/manifest/manifest-intro.html
−
 
  
 
==Importando clases necesarias dentro dunha activity==
 
==Importando clases necesarias dentro dunha activity==
Línea 141: Línea 316:
 
Image:PDM_UD1_CoñecendoAndroidStudio_2.jpg| Debemos ir ao '''Settings''' do IDE, como indica a imaxe ou premendo a combinación de teclas '''Control + Alt + S'''.
 
Image:PDM_UD1_CoñecendoAndroidStudio_2.jpg| Debemos ir ao '''Settings''' do IDE, como indica a imaxe ou premendo a combinación de teclas '''Control + Alt + S'''.
 
Image:PDM_UD1_CoñecendoAndroidStudio_3.jpg| Agora debemos ir pola árbore da esquerda ás seccións '''Editor''' -> '''General''' -> '''Auto Import'''
 
Image:PDM_UD1_CoñecendoAndroidStudio_3.jpg| Agora debemos ir pola árbore da esquerda ás seccións '''Editor''' -> '''General''' -> '''Auto Import'''
−
Image:PDM_UD1_CoñecendoAndroidStudio_4.jpg| Debemos cambiar a opción: '''Insert imports on paste''' ao valor '''ALL''' e marcar o checkbox '''Add unanbiguous on the fly'''.
+
Image:PDM_UD1_CoñecendoAndroidStudio_4.jpg| Debemos cambiar a opción: '''Insert imports on paste''' ao valor '''ALL''' e marcar o checkbox '''Add unanbiguous on the fly'''. Se queremos que ademais elimine os paquetes que xa non se usan marcaremos a opción 'Optimized imports on the fly'.
 
</gallery>
 
</gallery>
  
Línea 155: Línea 330:
 
Image:PDM_UD1_CoñecendoAndroidStudio_6.jpg| Aparece unha ventá na que teremos que escoller o paquete correcto.
 
Image:PDM_UD1_CoñecendoAndroidStudio_6.jpg| Aparece unha ventá na que teremos que escoller o paquete correcto.
 
</gallery>
 
</gallery>
 +
 +
==Modificando a versión compilada de debug a release==
 +
 +
 +
* Para instalar unha aplicación de Android Studio nun dispositivo móbil necesitamos xerar un arquivo '''APK'''.
 +
* Por defecto Visual Studio xera un apk en modo debugger. Neste modo, cando xeramos o apk, a aplicación estará 'firmada' cun certificado xerado pola ferramenta Android SDK  e que non será válido para instalar dende a 'Google Play Store', se a publicamos.
 +
 +
* Cando vexamos o [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Avanzado_Empaquetado_e_distribuci%C3%B3n#Modificando_a_versi.C3.B3n_compilada_de_debug_a_release punto de Enpaquetado e Distribución] amosaremos como xerar o apk release.
 +
 +
 +
 +
 +
<br />
 +
==Executando unha aplicación==
 +
 +
 +
<gallery caption="Executando unha aplicación" widths="350" heights="300px" perrow="2">
 +
Image:PDM_AndroidStudio_coñecendoIde10.jpg| Podemos ou executar unha aplicación en modo 'normal' (en vermello) ou en modo 'debugger' (en azul). Al facelo aparecerán os AVD dispoñibles, indicando os que xa están en execución. Deberemos marcar un deles para que a aplicación se instale nel e se execute.
 +
Image:PDM_AndroidStudio_coñecendoIde11.jpg| Imaxe da aplicación nun emulador.
 +
</gallery>
 +
 +
 +
 +
 +
 +
<br />
 +
==Configuracións de execución==
 +
 +
https://developer.android.com/studio/projects/add-app-module
 +
 +
 +
 +
  
  
  
  
−
==Modificando a versión compilada de debug a release==
 
  
  
  
−
* Máis información [https://developer.android.com/studio/run/index.html neste enlace].
 
  
  
Línea 170: Línea 376:
  
  
−
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]]  -- (2016).
+
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]]  -- (2019).

Revisión actual del 14:59 1 nov 2020

Introdución

  • Neste apartado vanse describir os cartafoles e arquivos máis esenciais dos que se compón un proxecto Android.
  • Comezaremos creando un proxecto que vai servir de base para desenvolver o curso.
Se o alumno quere pode crear un proxecto diferente por cada exercicio ou por cada unidade...



Creando un proxecto Base

  • En cada unidade imos crear un paquete diferente dentro do mesmo proxecto.
En cada paquete iremos poñendo as diferentes activities creadas.


  • Crea un novo proxecto:
  • Indicamos que imos desenvolver unha aplicación para móbil.
  • Escollemos unha dos padróns. No exemplo será unha pantalla en branco.
PDM Activity 17.jpg


  • Nome da aplicación: Aprendiendo.
  • Nome do paquete: cursoandroid.cursoandroid.aprendiendo
  • Cartafol onde se garda o proxecto: Podemos deixar o que trae por defecto.
  • Language: Java
  • Min API Level: 19
  • Marcaremos a opción de androidx (non está marcada na imaxe)
PDM Activity 18.jpg
Prememos o botón Finish.



NOTA: Se queredes desmarcar a última opción (androix) e non vos deixa quitala, unha vez creado o proxecto deberedes ir ao arquivo gradle.properties e cambiar as propiedades 'enableJetifier' e 'useAndroidX' a false. Unha vez cambiadas teredes que premer o enlace 'sync now' que aparece arriba á dereita.
PDM Activity 18b.jpg
Tamén deberedes de borrar todas as bibliotecas de compatibilidade que sexan del tipo androix e que se atopan no arquivo build.gradle(nivel de Módulo)
Podedes consultar neste enlace os 'implementation' específicos de androidx, pero se sabe facilmente polo seu nome.




  • Datos do arquivo build.gradle a nivel de módulo (pode ser que teñades outras versións dependendo da versión do Android Studio instalada):
  • MinSDK: 19: É o que indicamos cando creamos o proxecto
  • Target_SDK: 28
  • Compile_SDK: 28
  • Build Toos: 28 (ou a que haia no momento de instalar o Android Studio)
Nota: Explicaremos o significado posteriormente nesta mesma sección.
PDM Activity 0.jpg


  • Ao longo do curso, crearanse diferentes paquetes (ven ser como subdirectorios).
Vexamos un exemplo de como crear un novo paquete de nome tiposactivities' (é un exemplo)
Deixa a lo menos unha activity no paquete inicial, xa que se non a nivel gráfico o Android Studio o fai desaparecer.
Agora, premendo o botón dereito sobre o novo paquete podemos crear novas activities que irán nel.
En calquera momento podemos mover activities dun paquete a outro (arrastrando có rato) pero ao facelo aparecerá unha ventá na que teremos que escoller a opción Refactor.



  • Aínda que non está indicado nas diferentes activities creadas, cada vez que se cre unha activity de tipo launcher modificaremos o arquivo AndroidManifiest.xml para darlle un label a cada unha delas. O dato do label será o mesmo que o nome da activity. Isto o facemos para poder identificala dentro do emulador/dispositivo se imos á pantalla onde se ven todas as aplicacións instaladas:
1         <activity android:name=".UI.UD02_01_ConstraintLayout"
2                   android:label="UD02_01_ConstraintLayout" >
3             <intent-filter>
4                 <action android:name="android.intent.action.MAIN" />
5                 <category android:name="android.intent.category.LAUNCHER" />
6             </intent-filter>
7         </activity>
Neste caso a activity está nun paquete de nome UI, pero o nome da activity é: UD02_01_ConstraintLayout
Se executamos esta aplicación:



Nome das clases e layouts



Cartafoles nun proxecto Android

A continuación imos ver os contidos dos distintos cartafoles que compoñen un proxecto.

/app/

  • É o nome do módulo da aplicación.
  • Un módulo ven ser un conxunto de arquivos dunha aplicación (activities, layouts,...) e arquivos de configuración do Android Studio e da aplicación.
  • Un módulo pode depender doutro para a súa execución ou poden ser totalmente independentes.
  • Por defecto, cando creamos un proxecto AndroidStudio, crea un módulo de nome 'app'.

Máis información neste enlace.

/app/java

Nota: Ven ser no que en Eclipse era /src/. Veremos mais adiante que podemos cambiar a 'vista' de como se visualiza o proxecto e volver a ter o cartafol /src/.

/app/res

  • Cartafol /app/res (Resources/Recursos): almacena todos os ficheiros de recursos necesarios para a aplicación: imaxes, vídeos, ficheiros xml, animacións, ficheiros para a internacionalización, etc.
  • Importante: Todo o que se atopa dentro do cartafol /res/ ten que ter letras minúsculas e só poden conter letras, números e _ .Se se pon outro carácter o proxecto dará un erro de compilación.


PDM UD1 Estrutura 3.jpg


  • /app/res/drawble: Almacena as imaxes da aplicación en función da densidade (dpi) do dispositivo de destino. En Android veremos que podemos ter diferentes resolucións de imaxes para que a aplicación se vexa correctamente en dispositivos de tamaños e resolucións diferentes. Estas imaxes gardaríanse dentro dun cartafol de nome 'drawble-sufixo' no que o sufixo indicará con un código a que tipo de dispositivo debe cargarse as imaxes que estean dentro do cartafol. Por exemplo, o cartafol '/res/drawable-large' tería imaxes que se cargaría con dispositivo de entre 4 e 7 polgadas aproximadamente (observar imaxe).
  • /app/res/layout: Almacena os ficheiros xml onde se definen os elementos gráficos e a súa disposisición, das distintas pantallas que compoñen a aplicación. Igual que no caso anterior tamén imos poder ter diferentes sufixos para cargar layouts en función dos dispositivos. Así, por exemplo, se creamos o cartafol /app/res/layout-land cargaríamos os layouts que estean dentro deste cartafol cando teñamos o dispositivo en posición 'apaisada', é dicir, tumbado.
  • /app/res/mipmap: Almacena a icona que vai representar a aplicación cando estea instalada nun dispositivo. Ven ser a icona de lanzamento. Pódese ver na imaxe que indica que hai 5 iconas. Isto é así xa que crea unha por cada tipo de densidade. A densidade a veremos máis adiante pero ven ser o número de puntos por pulgada que ten o dispositivo. Fisicamente temos un cartafol por cada unha das densidades e dentro de cada cartafol temos o arquivo a cargar, o que pasa que AndroidStudio oculta os cartafoles. Podemos ver ese cartafoles se cambiamos a vista a 'Proyect' como veremos posteriormente.
  • /app/res/values: Almacena constantes que definen: cadeas de texto, estilos, cores, dimensións, etc.
  • dimens.xml Están declaradas as dimensións que se usaban no layout.
  • strings.xml Están declaradas cadeas de texto. A última é usada no layout, logo veremos onde se usan as demais.
  • colors.xml Están declaradas constantes que representar unha cor.
  • styles.xml Están declaradas constantes que representan estilos (como se van representar os elementos gráficos e as activities, como podan ser a combinación de cores, negrilla, cursiva, se vai ter menú,...)
  • Hai máis arquivos e cartafoles para xa o iremos vendo.

Nota: Todos son arquivos de configuración son XML que poden ser editados. Máis información neste enlace.

/assets

  • Contén o resto de ficheiros que se precisen para a aplicación: ficheiros de configuración, de datos, bases de datos,etc... Para acceder a estes recursos non se fai a a través da clase R senón que se fai a través da súa ruta no sistema.
  • No Android Studio o cartafol 'assets' non se atopa creado por defecto. Para crealo temos que ir ao módulo /app/ e premendo o botón dereito escoller a opción New => Folder => Assets Folder como se va na seguinte imaxe:
PDM UD1 Estrutura 4.jpg


Arquivo AndroidManifest.xml

  • Contén a definición das características máis importantes da aplicación: nome, versión, icona, activities, servizos, instrumentación, permisos de acceso aos recursos, etc.
PDM UD1 Estrutura 5.jpg
  • Na imaxe se pode ver entre outros datos:
  • Nome da icona a cargar (fai referencia a unha icona que se atopa en /app/res/mipmaps/
Podemos crear novas seguindo este entrada da Wiki.
  • Nome da aplicación que está definido nunha constante no arquivo /res/values/strings.xml. Ven ser o nome que aparece asociado a icona da aplicación.
  • O aspecto que vai ter a aplicación (ven ser coma un arquivo CSS de HTML). Se atopa no arquivo /res/values/styles.xml.
  • As activities que conforman o proxecto. Inicialmente so temos unha.

Identificar o minSDK, targetSDK e buildSDK

  • Anteriormente en Eclipse, dentro do arquivo AndroidManifest.xml tamén ían as liñas que indicaban o targetSDK e minSDK.
Estes conceptos (polo menos un deles) o vimos no proceso de creación do proxecto Ola Mundo. Se vos fixaches no paso un, indicabamos o minSDK no que ía funcionar a nosa aplicación.


  • Como comentamos anteriormente, a API vai determinar a versión do S.O. no que imos desenvolver a aplicación.
Cada nova versión incorpora novos compoñentes gráficos e novas funcionalidades, pero temos que manter un equilibrio entre a versión a escoller e omercado que queiramos acaparar.
  • A API tamén vai determinar que aplicacións poden ser instaladas no dispositivo móbil, xa que unha aplicación desenvolvida para unha versión superior non pode ser instalada nun S.O. Android cunha versión inferior.
  • Á hora de determinar a API nun proxecto Android teremos que escoller o seguinte:
  • MIN SDK: Será a API mínima (versión do S.O. Android) no que a nosa aplicación poderá funcionar. Non se poderá instalar nunha versión anterior.
  • TARGET SDK: Indica que versión do S.O. Android no que está probada a nosa aplicación e sabemos que funciona correctamente. Normalmente ponse a máis alta. Podería funcionar nunha versión posterior ou inferior (sempre que sexa maior que o minSdk). O uso dun target ou outro pode influír no aspecto da nosa aplicación en tempo de execución (por exemplo, pode cambiar o theme ou aspecto por defecto, en función do target)
  • BUILD SDK ou Compile SDK: Indica a versión do SDK que utilizamos para compilar a nosa aplicación. Isto vai limitar os recursos que podamos empregar no desenvolvemento da aplicación, xa que se por exemplo, temos unha nova funcionalidade nun API por exemplo, na API 22, e nos temos marcado un BUILD_SDK de 19, non poderemos facer uso del. O build_sdk sempre terá que ser maior o igual ao min_sdk.
Normalmente se segue a regra: minSdkVersion (mínima posible) <= targetSdkVersion == compileSdkVersion (máis alta posible SDK)



Nota: Estes datos se poden definir no arquivo AndroidManifiest.xml, pero se están nos dous sitios, terá preferencia (sobreescribe) o que se atope no arquivo build.gradle.


Cambiando o tipo de vista no Android Studio

  • En Android Studio podemos cambiar como visualizamos o proxecto da Aplicación.
  • Inicialmente estamos na vista Android, pero podemos cambiar a calquera outra premendo no combo indicado na seguinte imaxe:
PDM UD1 Estrutura 6.jpg


Por exemplo, dentro da vista Proyect podemos ter acceso a outros cartafoles interesantes:

/generated



  • Esta clase é compilada cada vez que modificamos algo no cartafol /app/res. O que fai e asinar a cada recurso que se atopa en /res/ un identificador. Desa forma imos poder referencialos na programación polo seu nome.
  • Neste exemplo se pode ver como dálle un id ao layout e na clase R xera automaticamente unha entrada para ese id asinándolle un número.

/ouputs

  • Unha vez que se compila e se constrúe (build) a aplicación xérase o apk da aplicación para poder ser instalada nun dispositivo. O apk ven ser un exe dun computador con sistema operativo Windows.
PDM UD1 Estrutura 13.jpg


  • Para poder xerar o apk hai que, ou ven executar o proxecto para que xere o apk e o instale nun dispositivo ou simplemente xerar o apk:
PDM UD1 Estrutura 14.jpg


  • Por defecto xera unha versión da aplicación para 'probas', ou en modo 'depuración'. Xa veremos máis adiante como facer que xere un apk para distribuír, na sección de Empaquetado e distribución.


Importando clases necesarias dentro dunha activity

Manualmente

  • Cando utilizamos novas clases dentro dunha actiivity, é necesario importalas para poder facer uso delas.
Por exemplo, se quere usar un TextView (ven ser un label de texto), podería poñer este código na Activity:
 1 public class MainActivity extends Activity {
 2 
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7 
 8         TextView texto = new TextView(this);
 9     }
10 }
Ao facelo, veremos que se pon en vermello a clase TextView e que se nos informa que podemos premer a combinación de teclas Alt + Intro:

PDM UD1 CoñecendoAndroidStudio 1.jpg


Se prememos dita combinación podemos ver como se engade automaticamente o 'import' correspondente a clase TextView:
 1 import android.app.Activity;
 2 import android.os.Bundle;
 3 import android.widget.TextView;
 4 
 5 public class MainActivity extends Activity {
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11 
12         TextView texto = new TextView(this);
13     }
14 }


Automaticamente

  • Para facer que o Android Studio importe automaticamente as clases, debemos cambiar a configuración do IDE:

Unha vez feito o anterior xa engade automaticamente as clases.



  • Pode suceder que ao querer utilizar unha clase, esta poda provir de dous paquetes diferentes. Neste caso teremos que utilizar a combinación de clase Alt+Intro e escoller o paquete correcto:

Modificando a versión compilada de debug a release

  • Para instalar unha aplicación de Android Studio nun dispositivo móbil necesitamos xerar un arquivo APK.
  • Por defecto Visual Studio xera un apk en modo debugger. Neste modo, cando xeramos o apk, a aplicación estará 'firmada' cun certificado xerado pola ferramenta Android SDK e que non será válido para instalar dende a 'Google Play Store', se a publicamos.




Executando unha aplicación




Configuracións de execución

https://developer.android.com/studio/projects/add-app-module










-- Ángel D. Fernández González -- (2019).