IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Android studio splash screen

Android Studio és un nou entorn de desenvolupament (IDE) per a Android ( vegeu Android development). Està basat en IntelliJ IDEA. És una alternativa a eclipse i el plugin ADT.

Introducció

Característiques:

  • Gradle: és la eina utilitzada per a construir els projectes (a diferència de Eclipse que utilitza Ant)
  • incorpora refactoring i "quick fixes" específics per a Android
  • Lint com a eina per a detectar possibles millores en performance, usability, version compatibility i altres problemes.
  • ProGuard: app-signing capabilities.
  • Wizars i templates per a crear components i dissenys Android comuns.
  • Rich layout editor that allows you to drag-and-drop UI components, preview layouts on multiple screen configurations, and much more.
  • Suport Built-in per a Google Cloud Platform, facilita la integració de Google Cloud Messaging i App Engine com a server-side components.

Requeriments

  • Java d'oracle. Versió 7 o superior per a Android 5.0 o superior.
  • Android SDK. el wizard de Android Studio ja l'instal·la.

IMPORTANT: Si no utilitzeu el Java d'oracle no us funcionarà correctament

Instal·lació

Instal·lació i primera execució

Aneu a la web:

http://developer.android.com/sdk/index.html#Other

A l'apartat

All Android Studio Packages

baixeu la versió de linux (actualment --acacha (discussió) 12:20, 14 gen 2015 (CET)):

android-studio-ide-135.1641136-linux.zip 	243917559 bytes 	7c8f2d0cec21b98984cdba45ab5a25f26d67f23a

Pas a pas (canvieu comandes per adaptar al vostre cas)

$ cd
$ wget https://dl.google.com/dl/android/studio/ide-zips/1.0.1/android-studio-ide-135.1641136-linux.zip

Comproveu el hash:

$ md5sum android-studio-ide-135.1641136-linux.zip

Descomprimiu:

$ sudo apt-get install unzip
$ unzip android-studio-ide-135.1629389-linux.zip

Configureu el path:

$ joe ~/.bashrc

Afegiu al final la línia:

export PATH=${PATH}:~/android-studio/bin:/home/sergi/Android/Sdk/tools:/home/sergi/Android/Sdk/platform-tools

i guardeu el fitxer. Ara executeu:

$ bash
$ studio.sh 

Seguiu els passos del wizard.

IMPORTANT: El wizard només s'executa el primer cop. Si voleu començar de zero i tornar a configurar cal que esborreu (feu còpia abans) la carpeta:

~/.AndroidStudio

TODO: Captures de pantalla

Us demanarà indiqueu on teniu el JDK. El JDK l'heu d'obtenir de la web d'Oracle:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

En el meu cas he baixat la versió Linux per a 64 bits. El fitxer és:

jdk-8u25-linux-x64.tar.gz

La URL era (OCO no es pot utilitzar directament cal acceptar les llicència)

http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz?AuthParam=1421233648_7ced9264c37373dc0b9880032e108ad9

IMPORTANT: Ha de ser JDK no servei un JSE!. Es requereix Java 7 per a treballar amb Android 5.0 o superior

descarregueu i instal·leu el JDK:

$ cd
$ cp Baixades/jdk-8u25-linux-x64.tar.gz .
$ tar xvzf jdk-8u25-linux-x64.tar.gz 

El path a posar al wizard en el meu cas és doncs:

/home/sergi/jdk1.8.0_25

Continueu. Escolliu custom i continueu. Ara toca el Android SDK. Per defecte el posarà a:

/home/sergi/Android/Sdk

Si ja el teniu el detecta i només actualitza sinó el baixa. Feu click a next. Us informa que us recomana instal·lar el suport KVM per que la execució de les màquines virtuals sigui més fluida. A Ubuntu executeu:

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Comproveu si funciona amb:

$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

NOTA: Pot ser que us indiqui que heu de canviar la configuració de la BIOS!

i executeu també

$ virsh -c qemu:///system list

Si respon tot està ok. Important recordeu activar l'opció de suport KVM al executar els emuladors -enable-kvm. Un exemple des del CLI

$ emulator -avd <avd_name> -qemu -m 512 -enable-kvm

A Android Studio

Aneu a Run > Edit Configurations...
Al panell esquerra del diàleg Run/Debug Configurations seleccioneu una configuració o creeu una de nova
A Target Device options seleccioneu x86-based AVD
A la pestanya Emulator, a Additional command line options poseu:
 -qemu -m 512 -enable-kvm




Primera execució i configuracions

S'executa anant a:

$ cd /usr/share/android-studio/bin

I executant amb puntbarra:

$ ./studio.sh

El primer cop uns demanara indicar on està el SDK de Java. En el nostre cas

/usr/share/jdk1.7.0_40

Abans de res executeu un link que hi ha a la primera pàgina del wizard de projecte:

Check for updates now

I seleccioneu Update & Restart si hi ha alguna novetat.

Crear un enllaç directe

IMPORTANT: Es pot fer des del IDe Android Studio. Al wizard inicial escolliu Configure > Create desktop entry

A la carpeta:

/usr/share/android-studio/bin

Hi ha un fitxer:

idea.png

Que pot servir d'icona.

Per a crear el enllaç ens desplaçarem al terminal i executarem la següent comanda

 sudo gedit /usr/share/applications/Android-studio.desktop

Ara es crea un arxiu amb la extensio .desktop que contindra on esta el executable i el icono corresponent.

 [Desktop Entry]
 Name=Android-studio
 Comment=Android-studio
 Exec=/usr/share/android-studio/bin/studio.sh 
 Icon=/usr/share/android-studio/bin/idea.png
 Terminal=false
 Type=Application

Introduim el següent text sempre que tinguem el programa en la carpeta usr/share.

Reiniciem el sistema i ja ens sortira en el menu Inici i a aplicacions.

Andr mbg.png

Si volem podem moure a l'escriptori la icona i ja podrem iniciar el Android-studio.

Quin Android SDK i JAVA JDK utilitza Android Studio ?

A la primera execució d'Android Studio s'indica quin JDK i quin SDK Android utilitzarem. Posteriorment podeu modificar-ho a:

Per a un projecte concret:

File > Project Structure

Per a tots els projectes

File > Other settings > Default project structure

També podeu tancar el projecte que esteu:

File > close project

Apareixerà el wizard seleccioneu

Configure > Project Defaults > Project Structure


Totes les configuracions d'Android Studio es guarden a

~ /.AndroidStudio

Sempre podeu esborrar aquesta carpeta per reconfigurar des de zero Android Studio

Conceptes

Mòduls, projectes i llibreries

De la documentació:

Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution.
Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole.

Definició traduïda per cada concepte:

  • Project: a IntelliJ IDEA/Android Studio un projecte encapsula tot el codi font, llibreries, instruccions de construcció de la aplicació (p.ex fitxers gradle en una app Android ) en una sola unitat organitzativa. . Tot el que es fa amb Android Studio es fa en el contexte d'un projecte. Els projectes defineixen subparts del mateix anomenades moduls i llibreries. Es poden crear projectes basats en un sol mòdul o en múltiples mòduls.
  • Module: és una unitat discreta de funcionalitat que es pot executar, depurar i testejar de forma independent. Incloueu el codi font, els build scripts, unit tests, etc. Cada mòdui pot utilitzar un SDK propi o un de compartir entre tots els mòduls. Un mòdul pot dependre d'altres mòduls.
  • Library: és un arxiu de codi compilat (com per exemple un fitxer JAR). IntelliJ IDEA/Android Studio suporta tres tipus de llibreries:
  • Module Library: són visibles només al mòdul que d'apliquen i es guarden al fitxer *.iml del mòdul.
  • Project Library: són visibles a tot el projecte i es guarden al fitxer *.ipr o a .idea/libraries.
  • Global Library: es guarda al fitxer applicationLibraries.xml de <User Home>/.IntelliJIdea/config/options. Són visibles a tots els projectes.

Aplicant-ho a Android i a la forma que ho utilitza Android Studio

  • Un projecte per aplicació android (Amb el nom de projecte que donem al crear el projecte)
  • Un mòdul per llibreria o per aplicació de test (Android studio afegeix mòdul de test per defecte). L'Aplicació

Recursos:

Estructura d'un projecte

Vegeu també Estructura d'un projecte Android a Eclipse

Si ja heu creat algun projecte amb Android Studio podeu veure la estructura de fitxers i carpetes a:

~/AndroidStudioProjects

Cada projecte és un subcarpeta en aquesta carpeta amb el nom del projecte. Per exemple si utilitzant el wizard d'Android Studio creeu un nou projecte anomenat HelloWorld amb una blank activity la carpeta serà:

~/AndroidStudioProjects/HelloWorld

i el seu contingut

$ ls -la
total 60
drwxrwxr-x  6 sergi sergi 4096 gen 15 11:35 .
drwxrwxr-x 18 sergi sergi 4096 gen 15 11:31 ..
drwxrwxr-x  5 sergi sergi 4096 gen 15 11:35 app
-rw-rw-r--  1 sergi sergi  436 gen 15 11:31 build.gradle
-rw-rw-r--  1 sergi sergi   81 gen 15 11:31 .gitignore
drwxrwxr-x  3 sergi sergi 4096 gen 15 11:31 gradle
drwxrwxr-x  3 sergi sergi 4096 gen 15 11:32 .gradle
-rw-rw-r--  1 sergi sergi  855 gen 15 11:31 gradle.properties
-rwxrw-r--  1 sergi sergi 5080 gen 15 11:31 gradlew
-rw-rw-r--  1 sergi sergi 2404 gen 15 11:31 gradlew.bat
-rw-rw-r--  1 sergi sergi  877 gen 15 11:35 HelloWorld.iml
drwxrwxr-x  5 sergi sergi 4096 gen 15 11:38 .idea
-rw-rw-r--  1 sergi sergi  425 gen 15 11:31 local.properties
-rw-rw-r--  1 sergi sergi   15 gen 15 11:31 settings.gradle

Anem a veure amb més detall aquesta estructura. Els projectes Android Studio poden estar formats per un o més mòduls (vegeu conceptes previs Android Studio). Cada mòdul és una unitat independent de desenvolupament amb el seu propi procés de creació i construcció del mòdul. Android studio utilitza el mòduls per crear aplicacions per a múltiples "plataformes" o form factors. Si a l'assistent creeu un aplicació HelloWorld per a tv, wearable i mòbils la estructura serà:

~/AndroidStudioProjects/HelloWorldMultipleFormFactor$ ls -la
drwxrwxr-x  3 sergi sergi 4096 gen 15 11:43 gradle
...
drwxrwxr-x  4 sergi sergi 4096 gen 15 11:43 mobile
drwxrwxr-x  4 sergi sergi 4096 gen 15 11:43 tv
drwxrwxr-x  4 sergi sergi 4096 gen 15 11:43 wear
...

Com podeu veure ara hi ha 3 mòduls (mobile,tv i wear) cadascú amb el seu propi Gradle/procés de construcció.

Anem a veure la estructura del mòdul app (nom que es posa als mòduls si són només per a mòbils/tablets):

 $:~/AndroidStudioProjects/HelloWorld/app$ ls -la
-rw-rw-r-- 1 sergi sergi 6858 gen 15 11:35 app.iml
drwxrwxr-x 5 sergi sergi 4096 gen 15 11:32 build
-rw-rw-r-- 1 sergi sergi  594 gen 15 11:32 build.gradle
-rw-rw-r-- 1 sergi sergi    7 gen 15 11:31 .gitignore
drwxrwxr-x 2 sergi sergi 4096 gen 15 11:31 libs
-rw-rw-r-- 1 sergi sergi  654 gen 15 11:31 proguard-rules.pro
drwxrwxr-x 4 sergi sergi 4096 gen 15 11:32 src

La carpeta més important és "src" que conté el codi font de l'aplicació Java. Dins de source Android Studio crear dos subcarpetes:

drwxrwxr-x 3 sergi sergi 4096 gen 15 11:32 androidTest
drwxrwxr-x 4 sergi sergi 4096 gen 15 11:32 main

main correspon al codi font de l'aplicació i els recursos Android i androidTest crea un esquelet per a creació de tests (sinó utilitzeu els test aquesta carpeta no la utilitzareu pas)

Dins de main trobareu$:

$ ls
AndroidManifest.xml  java  res

On:

Ara ja teniu localitzats els fitxers que propiament modificareu/creareu vosaltres mateixos com a desenvolupadors. La resta de fitxers són fitxers de suport per al procés de construcció de l'aplicació així com configuracions d'Android Studio i o Gradle l'eina de construcció que utilitza Android Studio. Anem a veure els detalls:

A l'arrel d'una mòdul (en el nostre cas el mòdul app):

$ ls -la
total 40
drwxrwxr-x 5 sergi sergi 4096 gen 15 11:35 .
drwxrwxr-x 6 sergi sergi 4096 gen 15 11:35 ..
-rw-rw-r-- 1 sergi sergi 6858 gen 15 11:35 app.iml
drwxrwxr-x 5 sergi sergi 4096 gen 15 11:32 build
-rw-rw-r-- 1 sergi sergi  594 gen 15 11:32 build.gradle
-rw-rw-r-- 1 sergi sergi    7 gen 15 11:31 .gitignore
drwxrwxr-x 2 sergi sergi 4096 gen 15 11:31 libs

-rw-rw-r-- 1 sergi sergi 654 gen 15 11:31 proguard-rules.pro

drwxrwxr-x 4 sergi sergi 4096 gen 15 11:32 src

La carpeta libs conté fitxers Jar o llibreries que utilitza la nostra app

IMPORTANT: Amb gradle podrem utilitzar un repositori centralitzat de llibreries actualitzar de forma que no caldrà afegir a lib les llibreries sinó simplement indicar a dependències quines llibreries necessitem. Desgraciadament no totes les llibreries estan disponibles a aquests repositoris i algunes llibreries s'hauran d'afegir a mà a la carpeta libs. El fet d'utilitzar un repositori centralitzat permet actualitzar llibreries de forma automàtica i millorar-ne la gestió

El fitxer principal per al procés de construcció amb Gradle és build.gradle:

  • build.gradle: . És l'equivalent de build.xml en Ant/Eclipse. Hi ha un fitxer build.gradle per a cada mòdul i també un build.gradle per al projecte sencer. Normalment només ens interessa el del mòdul per que aquí és on per exemple indiquem les dependències de la nostra aplicació. També s'indica la configuració per defecte del mòdul:
  • applicationId: Identificador únic del mòdul. S'utilitza el nom del paquet.
  • compiledSdkVersion: per defecte Android Studio utilitza el últim Android SDK instal·lat. Gradle utilitzarà les eines d'aquest SDK per fer la construcció/compilació de l'app. El SDK Manager gestiona/instal·la els SDKs

Per a més informació del format del fitxer consulteu Apartat Android del article Gradle.

Vegem la resta de fitxers de configuració:

Carpeta gradle: Conté el gradle wrapper i el fitxer de configuració i les seves propietats de configuració gradle-wrapper.properties
  • .gradle: Carpeta oculta utilitzada per gradle. No la hem de tocar mai directament
  • gradle.properties: per defecte està buit (només té comentaris). Només el modificarem si cal canviar la configuració per defecte de gradle
  • gradlew.bat: Per a Windows?
  • Fitxer .iml: Configuracions locals de la IDE (Android Studio basat en intelliJ IDEA). No s'han de guardar aquests fitxers a githubls
  • .idea folder: Més Configuracions locals de la IDE.
  • local.properties: Fitxers de configuracions locals. Indica el SDK android en local on es troba. No pujar a github
  • settings.gradle: Configuració de gradle a nivell de projecte. normalment inclou els mòduls que formen el projecte per tal de fer un tot.
  • .git: Si finalment utilitzem git també tindrem aquesta carpeta oculta amb dades locals de git. No s'ha de tocar mai directament

Un cop compileu l'aplicació per primer cop apareixerà una nova carpeta anomenada build amb tots els fitxers generats pel procés de construcció.

Observeu també el suport per defecte per a git amb fitxers .gitignore, per exemple a l'arrel del projecte:

$ cat .gitignore 
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build

Els fitxers indicats aquí tenen configuracions locals del projecte i no s'han de compartir amb la resta de desenvolupadors (cadascú tindrà les seves pròpies eines de configuració)

Vegeu el suport per defecte per a git:

$ cat .gitignore 
/build

Recursos:

Hello world

Recursos:

Pas a pas wizard

Captura1.png


En aquesta primera pantalla tenim de posar el nostre nom de projecte i modificar el package name posan al lloc de example

com.iesebre.dam2.holamon

Triem la nosta versió minima per treballar i la mes gran un cop fet aixó pasem a la següent. Captura2.png


En aquesta part ens diu si volem modificar la imatge per defecte que tindra la nostra aplicació un cop instalada a un dispositiu ja sigui virtual o fisic Captura3.png


Aquí ens deixa triar el tema que tindra el nostre dispositiu per defecte dixem el 1er Captura4.png


En aquest apartat podem definir el nom del fitxer .java i el layouts .xml ho deixarem per defecte Captura5.png


Si ho hem fet tot be surtira una cosa com aquesta.

Dades del projecte:

HolaMon
HolaMon
com.iesebre.dam2.holamon

Totes les opcions per defecte serveixen per fer un exemple senzill.

Github

Es pot configurar compte de github a les preferències:

File > Settings > Version Control > Github

es recomanable utilitzar un token i no pas un usauri i paraula de pas. De fet el propi Android Studio us crea el token.

Per importar un projecte cap a github.

Menú VCS > Import into Version Control > Share Project on github

Per a fer un clone:

VCS -> Checkout From Version Control -> Git

Us recomanem llegir:

I els docs oficials:

https://www.jetbrains.com/idea/help/using-git-integration.html

Trucs

Canviar el company domain per defecte que apareix al crear un nou projecte

$ cd ~/.AndroidStudio
$ grep -n "example.com" -r .
./config/options/options.xml:38:    <property name="SAVED_COMPANY_DOMAIN" value="sergi.example.com" />

Com podeu veure el fitxer a canviar és:

~/.AndroidStudio/config/options/options.xml

Editeu el fitxer i modifiqueu per nom que vulgueu.

IMPORTANT: Cal tancar i tornar a executar Android Studio per aplicar els canvis


Instal·lació de llibreries o SDK externs

Facebook

Configuració Facebook SDK a build.gradle per a Android Studio

Requeriments

L'API Android ha de ser la API 9 (Android 2.3) o superior.

Cal crear una build dependency i importar-la al projecte editant el fitxer build.gradle de Gradle:

repositories { mavenCentral() }

i

compile 'com.facebook.android:facebook-android-sdk:3.21.1'

Un com construïm l'aplicació ja es pot importar objectes com:

import com.facebook.Session

Gestió de projectes

El wizard us guarda els projectes per defecte a la vostra Home:

/home/sergi/AndroidStudioProjects

KVM

https://software.intel.com/en-us/blogs/2012/03/12/how-to-start-intel-hardware-assisted-virtualization-hypervisor-on-linux-to-speed-up-intel-android-x86-emulator

Eclipse vs Android Studio

Comparativa:

Vegeu també

Enllaços externs