versión inicial presentación android studio y gradle
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
TOCI. Importancia del IDEII. Android Studio
I. CaracterísticasII. DemoIII. FAQIV. Plugins
III. GradleI. CaracterísticasII. PluginsIII. Demo
IV. Nuevo Manifest MergerV. Depurar con Android Studio
I. Demo
¿El tamaño IDE Importa?
¿El tamaño IDE Importa?
I Android Studio
• BETA y 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
Creación de Proyecto
Editor de Proyecto
Actividades y mucho más
Editor de Navegación
Edición de ProGuard
Fixs Automáticos
Edición de recursos
Soporte xliff
Integración DDMS
Integración DDMS
Integración DDMS
Integración DDMS
Generador Assets
Layout – Previsualización
Layout – Selector color
Layout – RTL
Layout –Vista de APIs
Layout – Soporte API L
Estructura de archivos Android
… disponible en la versión 0.8.2 …
https://www.youtube.com/watch?v=hu4U8XKmJGA
Atributo tools• ignore• targetApi• locale• context• layout• listitem / listheader / Listfooter• showIn
goo.gl/9etE7d
tools para todo
goo.gl/Ac8XJI
Soporte Android Wear
Soporte Android Wear
Lint
Lint – Nivel API
Lint – Errores Comunes
Lint – Errores Comunes
Lint – Cast
Lint – Dependencias
Análisis de código
Firmar APPs
Atajos
• Ctrl+D Duplicar• Shift+F6 Refactorizar o renombrar• Alt+Enter Fix rápido.• Alt+Insert Generar• Ctrl+N Encontrar clases• Ctrl+Shift+N Encontrar archivos• Shift+Shift Buscar cualquier tipo• F4 Entrar configuración proyecto
...y aún hay muchísimo más
Demo
FAQ¿Alguna versión de Android Studio es estable?
¿Puedo migrar proyectos desde eclipse?
¿Cómo no tener problemas después de actualizar Android Studio?
Plugins ÚtilesLos que utilizo:
• 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, fácil.• Variantes de aplicación• Gestión dependencias Maven• Manejo de keystores• Modo Offline• Compilaciones Incrementales• Hecho por Gradleware• Reemplaza Ant
Mis Razones
❤
¿Cómo funciona
Gradle?
Estructura de Proyecto
Un proyecto muchos módulos
settings.gradle
Proyecto build.gradle
Repositorios Gradle repositories {
jcenter()
mavenCentral()
mavenLocal()
ivy {
url 'http://repo.mycompany.com'
}
maven {
url 'https://www.testfairy.com/maven'
}
flatDir {
dirs 'prebuilt-libs'
}
}
gradle-wrapper.properties
Módulo build.gradle
Dependencias Gradle
Dependencias Gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v13:+'
compile 'com.google.android.support:wearable:+'
compile 'com.google.android.gms:play-services-wearable:+‘
}
Estructura de CarpetassourceSets { main { manifest { srcFile ‘AndroidManifest.xml' } java { srcDir 'src' } res { srcDir 'res' } assets { srcDir 'assets' } resources { srcDir 'src' } } androidTest.setRoot(‘androidTest') }
Build Type buildTypes { debug { buildConfigField "boolean", "KAMIL", "false" } release { buildConfigField "boolean", "KAMIL", "true" runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt') } }
BuildConfig.KAMIL
Build Type
Debug
Release
Release
Alpha
Beta
Debug
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
La magia de Gradle
signingConfigs
signingConfigs {
release {
keyAlias 'test'
keyPassword System.getenv(“KEY_PASSWORD")
storeFile file('keystore.test.jks')
storePassword System.getenv(“STORE_PASSWORD")
}
}
FlavorGroups
Soporte para multi-apk
Crea tus propias tasks
task testfairyAllRelease << {
android.productFlavors.all { theProductFlavor ->
tasks.getByName("testfairy$
{theProductFlavor.name.capitalize()}Release").execute()
}}testfairyAllRelease.dependsOn assembleRelease
Plugins para Gradle
• sdk-manager-plugin http://goo.gl/m8WVwO
• Gradle Maven Push http://goo.gl/aWtTbF
• Testfairy gradle plugin. http://goo.gl/QpNJ4D
Demo 2
Nuevo Manifest Merger
• Control explicito en la fusión.• Es posible desactivarlo.
android { useOldManifestMerger false #por defecto}
Nuevo Manifest Merger
<activity android:name=“droidcon.com.MainActivity" android:label=“Droidcon" android:screenOrientation="portrait" tools:merge="override“
tools:replace="label" />
Manifest > Marker
.. xmlns:tools="http://schemas.android.com/tools"/> <activity android:name=“droidcon.com.MainActivity" android:label=“Droidcon" android:icon=“@drawable/icon“ tools:selector=“com.droidcon.lib"
tools:replace="label, icon" />
Manifest > Placeholder
<activity android:name=".Main"> <intent-filter> <action android:name="${applicationId}.foo"> </action></intent-filter></activity>
Hay más en …
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)
• Evaluación de expresiones en puntos de parada.
Depuración en Android (2)
• Análisis de variables y objetos
Depuración en Android (3)
• Analizando utilizando herramientas de DDMS **
Depuración en Android (4)
• Analizando métricas vía TestFairy.com para obtener videos, estadísticas, errores, logs, uso de cpu, uso de red…etc
La última demo
¡Gracias a todos!Referencias:Guía usuario Gradle http://goo.gl/5b89FtAndroid Develop http://developer.android.com/training/index.html Tools Android http://tools.android.com/ Android Studio http://developer.android.com/sdk/installing/studio.html Comunidad de Android Developers.Y otras fuentes que olvido mencionar.
@KamilZabdyr