android studio y gradle. droidcones 2014
DESCRIPTION
El objetivo de la charla es intentar convencer y motivar a los más excépticos a utilizar Android Studio junto con Gradle. Explicando, entre otras cosas, como incrementar la productividad con las últimas características y plugins de ambos, proponiendo soluciones a los errores más habituales y mostrando en una demo las muchas ventajas que ofrece.TRANSCRIPT
¿EL TAMAÑO IDE IMPORTA?
I ANDROID STUDIO
•Beta e IDE oficial• Idea community edition• ¡Creado para nosotros! • Integración de gradle•Actualizaciones
MIS RAZONES
❤
¿MEJOR QUE ?
CARACTERÍST ICAS DE
ANDROID STUDIO
SOPORTE PARA GRADLE
• NUEVO PROYECTO • EDITOR DE PROYECTO
¡Y MUCHO MÁS!
FIXS AUTOMÁTICOS
EDICIÓN DE PROGUARD
SOPORTE XLIFF
INTEGRACIÓN DDMS
GENERADOR ASSETS
EDITOR DE NAVEGACIÓN
SELECTOR COLOR
PREVISUALIZACIÓN
APIs
RTL
ESTRUCTURA ANDROID
… disponible en la versión 0.8.2
https://www.youtube.com/watch?v=hu4U8XKmJGA
TOOLS PARA TODOgoo.gl/Ac8XJI
ANÁLISIS DE CÓDIGO
FIRMAR APPS
FAQ
• ¿Alguna versión de Android Studio es estable?
• ¿Puedo migrar proyectos desde eclipse?
• ¿Cómo no tener problemas al actualizar Android Studio?
PLUGINS ÚTILES
• Markdown http://goo.gl/uV5Rbe
• Genymotion http://goo.gl/Tn8QQZ
• ButterKnife http://goo.gl/JUBtMj
• Parcelable http://goo.gl/s815Qy
¡Y HAY MUCHÍSIMOS MÁS!
I GRADLE TOO
• Groovy DSL.
• Hecho por Gradleware• Variantes de aplicación
• Gestión dependencias• Manejo de keystores• Modo Offline• Compilaciones Incrementales
MIS RAZONES
❤
¿CÓMO FUNCIONA
GRADLE?
ESTRUCTURA DE
PROYECTO• Un proyecto muchos
módulos• Permite definir distintas
estructuras de carpetas
REPOSITORIOS GRADLE repositories {
jcenter()
mavenCentral()
mavenLocal()
ivy {
url 'http://repo.mycompany.com‘ }
maven {
url 'https://www.testfairy.com/maven‘ }
flatDir {
dirs 'prebuilt-libs'
}}
DEPENDENCIAS GRADLE
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v13:+'
pagoCompile 'com.google.android.support:wearable:+'
compile 'com.google.android.gms:play-services-wearable:+‘
}
BUILD TYPE buildTypes { debug { buildConfigField "boolean", "KAMIL", "false" } release { buildConfigField "boolean", "KAMIL", "true" runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt') } }
BuildConfig.KAMIL
PRODUCT FLAVOR productFlavors {
gratis {
applicationId 'es.droidcon.com.free'
versionCode 2
}
pago {
applicationId 'es.droidcon.com.paid'
versionCode 1
}
}
VARIANTS
BUILD TYPE
PRODUCT FLAVOR
PagoDebug
Pago
Debug
VARIANT
LA MAGIA DE GRADLE
SIGNINGCONFIGSsigningConfigs {
release {
keyAlias 'test'
keyPassword System.getenv(‘KEY_PASSWORD’)
storeFile file('keystore.test.jks')
storePassword System.getenv(‘STORE_PASSWORD’)
}
}
FLAVOR GROUPS
SOPORTE PARA MULTI-APK
PLUGINS PARA GRADLE
• sdk-manager-plugin goo.gl/m8WVwO
• Gradle Maven Push goo.gl/aWtTbF
• Testfairy gradle plugin goo.gl/QpNJ4D
DEMO
NUEVO MANIFEST MERGER
<activity android:name=“droidcon.com.MainActivity" android:label=“Droidcon" android:screenOrientation="portrait"
tools:replace="label" />
android { useOldManifestMerger false #por defecto}
• Control explicito en la fusión• Es posible desactivarlo
NUEVO MANIFEST MERGER
<activity android:name=".Main"> <intent-filter>
<action android:name="${applicationId}.foo"> </action> </intent-filter></activity>
http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
DEPURACIÓN EN ANDROID (1)
• Analizar y filtrar el log del sistema.• Introducir filtros en logcat
DEPURACIÓN EN ANDROID (1)
• Log.i Info• Log.d Debug• Log.e Error• Log.v Verbose• LOG.w Warm• Log.wtf (what
terrible error)
DEPURACIÓN EN ANDROID (2)
• Mediante break-points ( puntos de parada)
DEPURACIÓN EN ANDROID (2)
DEPURACIÓN EN ANDROID (2)
• Análisis de variables y objetos
DEPURACIÓN EN ANDROID (3)
• Analizando utilizando herramientas de DDMS **
LA ÚLTIMA DEMO
¡GRACIAS A TODOS!
REFERENCIASGuía usuario Gradle //goo.gl/5b89Ft
Android Develop //developer.android.com/training/index.html
Tools Android //tools.android.com/
Android Studio //developer.android.com/sdk/installing/studio.html
Comunidad de Android Developers.
Y otras fuentes que olvidé mencionar. ¡SORRY!
@KamilZabdyr