Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 12/02/15, 12:50:15
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Migrando a Android Studio

Resumo mi primer intento de migrar de Eclipse a Android Studio: dos horas perdidas, la impresión de que es muy potente y que la integración con gradle está algo verde.

Instalo el Android Studio sin SDK en Windows 8.1 64 bits, me dice que necesita el JDK 7 64 bits, instalo, detecta el Android SDK y actualiza algunas cosas, perfecto.

Importo uno de los proyectos del workspace de Eclipse y parece que el importador es muy listo y donde usaba .jar detecta las dependencias y crea los ficheros gradle. Sorprendido.

Primer problema, mi app tiene un minSdk 4 pero incluye bibliotecas con minSdk 7 (play services, p.ej.). En Eclipse no pasa nada porque el minSdk del manifest lo pones a mano normalmente, y ya me preocupo en mi código de no usar cosas del API 7 si estoy en dispositivos antiguos. Android Studio sin embargo tiene un auto-merger por defecto que automáticamente combina los manifest de las bibliotecas en el de la app. Y se quejaba amargamente de que mi app tenía un minSdk menor que el de la biblioteca y eso no podía ser.

Pensé que habría que andar haciendo "flavors" de la app (versiones que cambian solo algunos ficheros del código, muy útil para hacer compilaciones para el entorno de pruebas o de producción fácilmente). Pero no, la solución era más fácil, hay un atributo que se llama toolsverrideLibrary que permite a gradle ignorar las versiones de sdk que indique cierta biblioteca.

Código:
    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="19"
        tools:overrideLibrary="com.google.android.gms"/>
Bien, guardo el fichero y... ¡sorpresa! El fichero no se guarda, y en su lugar obtengo un "Error: exception during working with external system:" (excepción que no se muestra por cierto). Luego indica que falló la sincronización de Gradle y que la edición y la depuración no funcionarán correctamente (doy fe).

Y así llevo hora y media Huelga decir que mi disco funciona perfectamente y le ocurre a mucha gente, pero no me vale ninguna solución. Ni poner el JAVA_HOME o el PATH al JDK de 64 bits, ni ejecutar como administrador, ni desactivar el firewall, ni invalidar la caché, ni borrar el directorio .gradle, ni jugar con los parámetros de VM de gradle, nada.

Mmmh, ¡ya está! Creando un proyecto nuevo estoy viendo que el importador no era tan listo y en el build.gradle autogenerado no pone los atributos "versionCode" y "versionName". Parece que si no están, falla todo, no me preguntéis por qué. Da un poco de miedo tocar algo de los ficheros build y que casque todo sin decirte la razón.

Código:
    defaultConfig {
        applicationId "com.mocelet.christmas.lights"
        minSdkVersion 4
        targetSdkVersion 19
	versionCode 9
        versionName "1.2"
    }
Bien, ya compila y lo lanza en el emulador Habrá que darle la oportunidad, hay cosas que las facilita muchísimo, aunque la configuración del proyecto al principio sea más engorrosa. El IDE con que no hagas cosas raras con los XML como me pasaba con Eclipse me conformo, de temas de autocompletado, resaltado de sintaxis y demás parecen similares.

Espero que os valga la experiencia para algo, era publicarlo aquí o escribirlo en evernote para acordarme en un futuro jaja
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita


  #2  
Viejo 12/02/15, 16:23:41
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Pues yo estaba pensando en instalar Android Studio y migrar todos mis proyectos y me acabas de acojonar vivo, creo que voy a seguir con Eclipse hasta que ya no saquen mas ADTs y me tenga que joder y dar el salto.
Responder Con Cita
  #3  
Viejo 12/02/15, 16:50:06
Array

[xs_avatar]
dilux dilux no está en línea
Miembro del foro
· Votos compra/venta: (1)
 
Fecha de registro: may 2011
Mensajes: 275
Tu operador: Movistar

Yo la verdad que no he probado a migrarlos, pero he empezado proyectos nuevos con Android Studio y la verdad es que es una autentica maravilla, yo lo recomiendo 100%
Responder Con Cita
  #4  
Viejo 12/02/15, 16:56:42
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

El importador quitando esos dos temas lo ha hecho bien, ha importado también un proyecto biblioteca que tenía.

El editor como tal no creo que esté verde después de un año. Y el único problema de gradle es que si la configuración automática no funciona es un pequeño galimatías arreglarlo a mano.

Supongo que lo usaré unos días a ver si me aclaro, hay atributos que están escritos en varios sitios a la vez y no entiendo por qué . Eso sí, el control de dependencias, importar las bibliotecas de google sin andar con jars, y lo de distintas versiones de la app a golpe de click me han ganado.

Eclipse tampoco puedo decir que no me haya hecho perder tiempo, aunque la culpa era del plugin de android, las cosas como son.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #5  
Viejo 18/02/15, 16:31:17
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Bueno, el IDE sigue sin gustarme demasiado... falta de costumbre supongo. Eclipse compila automáticamente según vas escribiendo y te señala en rojo rápidamente todas las clases con errores. Android Studio no.

Con Eclipse te enteras de dónde están los ficheros, con Android Studio no porque te los presenta en una vista lógica. Tenía un jar que no me valía para nada ya en el directorio libs, pero si no me voy al explorador de ficheros no me entero porque en la vista normal del proyecto no sale. Lo mismo con el fichero de proguard, no sale pero está ahí. (EDIT: en efecto, desconocimiento del IDE... hay una vista que es Android, donde el fichero proguard no sale, y otra que es Project, donde sí... y que se parece más a un explorador de ficheros convencional)

Gradle tiene una gran ventaja a la hora de trabajar con las bibliotecas de Google Play (amén de no andar con jars), y es la compilación selectiva: puedes cargar solo una parte de la funcionalidad. No tiene sentido que el APK ocupe dos megas más por incluir las APIs de Google Maps, Android Wear, Fit, etc. etc. si solo te interesa la parte de anuncios p.ej.

P.D: Y para cambiar el nombre de un módulo (que a veces por defecto al importar es "app"), aunque hay un Rename module no basta con eso... ver solución

P.D: El mensaje "Cannot resolve symbol getDefaultProguardFile" que sale al editar el build.gradle, aunque intimidatorio es un error "estético" que no afecta a la funcionalidad. Me quedo más tranquilo jeje
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 18/02/15 a las 19:55:25.
Responder Con Cita
  #6  
Viejo 19/02/15, 16:47:52
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
Por si os sirve de consuelo, yo llevo más de un año con AS (si, desde las primeras alphas, asi de loco estoy ) y estoy encantadísimo con el cambio.

 Cita: Originalmente Escrito por mocelet Ver Mensaje
Eclipse compila automáticamente según vas escribiendo y te señala en rojo rápidamente todas las clases con errores. Android Studio no.
En mi caso sí señala las clases con errores, aparecen subrayadas en rojo




 Cita: Originalmente Escrito por mocelet Ver Mensaje
Con Eclipse te enteras de dónde están los ficheros, con Android Studio no porque te los presenta en una vista lógica.
Aunque veo que has descubierto la solución, esa vista una vez te acostumbras es bastante cómoda, ya que te separa totalmente cada módulo y te enseña lo importante, sin .iml, .gradles.. cada cosa en su apartado correspondiente

 Cita: Originalmente Escrito por mocelet Ver Mensaje
P.D: Y para cambiar el nombre de un módulo (que a veces por defecto al importar es "app"), aunque hay un Rename module no basta con eso...
La verdad es que eso si que es una tocada de narices a veces. Pero con Refactor -> Rename module y Refactor -> Rename después, no suele haber ningún problema


 Cita: Originalmente Escrito por mocelet Ver Mensaje
P.D: El mensaje "Cannot resolve symbol getDefaultProguardFile" que sale al editar el build.gradle, aunque intimidatorio es un error "estético" que no afecta a la funcionalidad. Me quedo más tranquilo jeje
Eso es cosa del plugin de Groovy de la versión de IntelliJ en la que se basa AS.

Esperemos que Google adopte nuevas versiones del plugin de Groovy en proximas releases de AS!


En mi opinión, AS tiene una mejor gestión de proyectos.

Eclipse trabaja con un workspace con todos tus proyectos. Android Studio trabaja con proyectos, formados por modulos. Cuando trabajas en un proyecto, ves sus modulos, pero nada de otros trabajos que hayas hecho (solo te centras en lo importante).

Cada proyecto tiene su build.gradle y su settings.gradle. Lo que pongas en el build.gradle de proyecto se aplicará a todos los build.gradle de cada módulo.

Y dentor del build.gradle de cada módulo puedes definir sus dependencias

Código:
compile 'groupid:libreria:version'
Código:
compile project(':modulo_local')
Para mi gusto, mucho más cómodo, sin duda.

Migrar un proyecto de Eclipse a AS puede ser un dolor de cabeza, pero la forma más facil, en mi opinión, es crear un nuevo proyecto en AS, observar su estructura (proyecto -> modulo), y tratar de adaptarla en el proyecto ya existente (si necesitáis un cable, preguntad )

Última edición por Dexafree Día 19/02/15 a las 17:18:17.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 19/02/15, 18:41:20
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Gracias por los aportes

Sobre los errores en rojo, me los muestra pero solo en la clase que esté editando. Si toco algo en esa clase que afecte a otras, las otras no se marcan y solo descubro el error al compilar y verlo en la ventanita de mensajes.

Ya me quedaré en Android Studio, me falta importar solo un proyecto ya y el gradle es muy flexible (y muy tiquismiquis también...)
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 19/02/15, 19:23:53
Array

[xs_avatar]
gonza28 gonza28 no está en línea
Desarrollador
 
Fecha de registro: feb 2012
Localización: INTERESA?
Mensajes: 4,191
Modelo de smartphone: Samsung Galaxy Note 4
Tu operador: Personal
@mocelet
Yo soy novato en java y siempre que hice mis cosas las hice en eclipse. Pero tuve varios intentos de pasarme a android studio y siempre mi problema fue con las librerias. siempre que quise importar algo, era problema. Lo abandoné unas 5 o 6 veces y lo tenia instalado en mi pc.

Luego un dia lo agarre y descubrí como se importaban realmente las cosas. Listo! desde ahí no lo solté nunca mas.
Hoy tengo un proyecto con 134 clases y fragmentos y me llevo de lujo con el. No vuelvo mas a eclipse salvo que derepente android studio se vuelva loco
Acostumbrate y verás.
Agradezco a un tio que en otro post me dijo algo como esto y me animó a volver a intentarlo.


Los errores tambien te los marca en rojo
Responder Con Cita
Gracias de parte de:
  #9  
Viejo 19/02/15, 22:06:23
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Ya me quedaré en Android Studio, me falta importar solo un proyecto ya y el gradle es muy flexible (y muy tiquismiquis también...)
Gradle en realidad es muy flexible y potente. Puedes hasta ejecutar tareas en tiempo de compilacion (hay incluso tareas para subir una compilacion a Maven Central directamente desde el IDE, solo tocando el build.gradle. Es bestial!)

Una vez le coges el truco pasas a amarlo

Bienvenido al club
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 23/02/15, 19:54:33
Array

[xs_avatar]
murtrum murtrum no está en línea
Usuario muy activo
 
Fecha de registro: nov 2012
Mensajes: 7,115
Tu operador: Otra

Hola a todos,

he instalado el Android Studio, última versión para linux, instalé el Java SDK 8

pero cuando creo un nuevo proyecto me pone en rojo que no puede resolver a una variable las R

como en esta línea:

setContentView(R.layout.activity_main);

aclaro que lo hace con los proyectos nuevos, voy a NEW android proyect sigo el asistente y el código inicial lo crea solo el Android Studio y ya dice que tiene errores sin que yo toque nada.
Responder Con Cita
  #11  
Viejo 24/02/15, 08:53:18
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
Eso suele ser porque la compilación no termina.

Al compilar, en la consola de gradle debería aparecer algún mensaje de error (indicarte si hay algún problema en algún XML, por ejemplo)

Te recomiendo que abras un hilo nuevo con algo más de información para intentar tratarlo de forma separada
Responder Con Cita
  #12  
Viejo 24/02/15, 09:37:26
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

 Cita: Originalmente Escrito por Dexafree Ver Mensaje
Gradle en realidad es muy flexible y potente. Puedes hasta ejecutar tareas en tiempo de compilacion (hay incluso tareas para subir una compilacion a Maven Central directamente desde el IDE, solo tocando el build.gradle. Es bestial!)

Una vez le coges el truco pasas a amarlo

Bienvenido al club
Ya nos vamos llevando mejor AS y yo Los flavors son un buen invento, ahora tengo un flavor que apunta al servidor de producción y otro flavour que apunta al servidor local, antes tenía que andar comentando y descomentando líneas de código.

El editor en general lo veo más robusto, y me encantan los detallitos como que al tratar con imágenes te ponga la miniatura al lado de la línea de código que la usa.

Errores de esos raros de ahora me quedo tonto no me ha vuelto a dar, tal vez lo habrán corregido en alguna actualización.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 23:18:06 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /