studio - flavors android gradle
¿Es posible usar el sistema de compilación Gradle para Android con Eclipse? (2)
Tengo una aplicación que debe ser compilada varias veces con diferentes recursos para diferentes clientes (marca, configuración y cambio de datos precargado entre clientes).
A raíz del Google I / O de este año, escuché sobre el nuevo sistema de compilación de Android basado en Gradle. Así que pensé que sería una buena idea realizar este escenario de fuente única / múltiples apk utilizando un script de construcción de Gradle.
Ahora aquí viene mi pregunta: ¿cómo puedo empezar a usar Gradle para construir mientras me apego a Eclipse? Todas las lecturas que encontré en línea apuntan a convertir el proyecto al aún inmaduro Android Studio. Me gustaría postergar la migración a Android Studio hasta que Google lo declare "seguro" para el uso en producción.
Idealmente, me gustaría poder enlazar las secuencias de comandos de compilación con las configuraciones de Depuración y Ejecución de Eclipse, de forma muy similar a como puedo elegir y elegir diferentes objetivos de compilación para depurar y archivar en XCode. Si eso es posible, ¿qué pasos son necesarios para que funcione?
Me disculpo por la calidad noobish de estas preguntas, pero para mí este es en realidad un país bastante desconocido. Cualquier ayuda es apreciada.
Editar: Nuestro equipo ha migrado a Android Studio a finales de octubre de 2013 y desde la versión 0.4 se han encontrado cada vez menos errores. Si su organización no es muy conservadora con respecto a la adopción de entornos de desarrollo anteriores a la 1.0, le animo a que se sumerja en el agua fría y trate de trabajar con Android Studio y su sistema de compilación Gradle. Lo único importante que falta en mi humilde opinión es un apoyo decente para las pruebas unitarias.
- Instalar Gradle:
a. http://gradle.org/gradle-download/ b. Elija 2.1 de la sección de lanzamientos anteriores. do. Descomprimir en la carpeta conveniente. (Ej: D: / Graddle / gradle-2.1) d. Establecer variables de entorno del sistema. yo. GRADLE_HOME como D: / Graddle / gradle-2.1) ii. GRADLE_OPTS como -XX: MaxPermSize = 512m iii. % GRADLE_HOME% / bin a la ruta de acceso iv. Establezca ANDROID_HOME (Ej: D: / android-sdk) v. Agregue "% ANDROID% / platform-tools" a la ruta.
mi. Abra el símbolo del sistema y compruebe que gradle está establecido. Puede usar gradle -version para verificar.
Instalar el plug-in de eclipse de Gradle: a. Lanzamiento de Eclipse b. Ayuda> Eclipse Market Place c. Buscar "gradle" d. En eso elige "Nodeeclipse / enide" e. Seleccione todos los listados, acepte e instale. F. Reinicie eclipse una vez instalado.
Establecer Gradle & Java Homes: a. Lanzamiento eclipse. segundo. Ventana> Preferencias> Gradle EnIDE c. Establezca estos si no está establecido: i. Se establece el uso de Gradle en casa (por ejemplo: D: / Graddle / gradle-2.1) ii. Se establece JAVA_HOME alternativo para usar (Ej: C: / Archivos de programa (x86) / Java / jdk1.7.0_60) iii. Las opciones de JVM para GRADLE_OPTS se establecen en "-XX: MaxPermSize = 512m"
Construya el proyecto: a. Expanda APK en eclipse Java explorer. segundo. Haga clic derecho en build.gradle c. Ejecutar como> Gradle GUI d. Comand Line: gradle clean build e. Espere a que se complete la compilación: la compilación de primera vez llevará varios minutos. F. Si se genera error de dex o espacio de pila Java, i. Abra build.gradle en el editor. ii. Para compilaciones multi-dex: configure el javaMaxHeapSize apropiado en función de su java (javaMaxHeapSize = 1024M para Java de 32 bits, 2048M para Java de 64 bits) iii. Puede comentar la firma (// aplicar desde: "$ rootProject.projectDir / jenkins_config / gradle / signing.gradle";) para evitar la firma de la compilación de depuración. iv. Compila de nuevo después de estas correcciones.
Instalar el dispositivo Build On: a. Conecte el dispositivo a m / cb Haga clic derecho en build.gradle c. Ejecutar como> gradle installDebug Gradle Android start d. Espere a que se complete la instalación
Depuración compilación: a. Inicie la aplicación b. Adjunte el depurador (DDMS> Dispositivos> Aplicación). do. Pudimos depurar en pocos dispositivos marcados.
Es posible utilizar 2 sistemas de compilación (basados en Eclipse + gradle). Solo asegúrese de que las carpetas de salida sean diferentes ( bin
para ADT, build
para gradle). (Actualización para TL; DR: compruebe Nodeclipse / Enide Gradle para Eclipse ( marketplace ))
File -> Export -> Generate Gradle build files
simplemente agregará build.gradle
con el contenido a continuación (pero compruebe las versiones). No hay archivos existentes cambiados.
com.android.tools.build:gradle
versión com.android.tools.build:gradle
debe ser la última . Para gradle type gradle build
como se gradle build
en http://tools.android.com/tech-docs/new-build-system/user-guide . Pruebe gradle tasks
para más. (En mi conexión a Internet lenta tardé 1 hora para que gradle pueda descargar todas las dependencias necesarias)
El tutorial de Vogella http://www.vogella.com/articles/AndroidBuild/article.html aún no está listo. Otros tutoriales en línea no están realmente terminados http://www.jayway.com/2013/02/26/using-gradle-for-building-android-applications/
Eclipse ADT aún no está utilizando gradle, creo que primero se pulirá dentro de Android Studio. No sería tan inteligente comenzar a usar la tecnología en evolución en ambos IDEs al mismo tiempo.
Vea el ejemplo de build.gradle
continuación. Si ya dominaste Gradle, entonces tal vez Wizards no se necesita en absoluto. Para obtener la última plantilla build.gradle
para el proyecto clásico de Android, compruebe gh.c/N/n-1/b/m/o.n.e.e.g/docs/android/build.gradle .
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath ''com.android.tools.build:gradle:0.5.+''
}
}
apply plugin: ''android''
dependencies {
compile fileTree(dir: ''libs'', include: ''*.jar'')
}
android {
compileSdkVersion 8
buildToolsVersion "19.0.0"
sourceSets {
main {
manifest.srcFile ''AndroidManifest.xml''
java.srcDirs = [''src'']
resources.srcDirs = [''src'']
aidl.srcDirs = [''src'']
renderscript.srcDirs = [''src'']
res.srcDirs = [''res'']
assets.srcDirs = [''assets'']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot(''tests'')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot(''build-types/debug'')
release.setRoot(''build-types/release'')
}
}
ADT-Bundle no viene con Eclipse Marketplace, por lo que el sitio de actualización podría ser utilizado.
Actualizar el repositorio p2 para la integración de Gradle para Eclipse es
http://dist.springsource.com/release/TOOLS/gradle
Pero desde la versión 3.4.0 no proporciona Editor para archivos .gradle. Entonces no hay sentido de tenerlo para el desarrollo de Android.
Me gustaría ir con la compilación predeterminada de ADT, tener gradle como compilación secundaria para la experimentación y mantener un ojo cuando el flujo de errores en http://tools.android.com/tech-docs/new-build-system se vuelve raro. (Eso debería estar alrededor de la versión formal 1.0)
ACTUALIZACIÓN: 2014-04-15
Blog de Alex Ruiz (del equipo Android) sobre Android, Gradle y ADT
El modelo Gradle de Android
En lugar de crear modelos de Android / Gradle específicos de IDE, decidimos tener una representación independiente de IDE de un proyecto de Gradle. De esta forma, tenemos una única fuente de información que es más fácil de mantener. La integración de IDE se implementará como un complemento para cada IDE compatible (en nuestro caso, Eclipse e IDEA). El principal beneficio de este enfoque es que podemos liberar el complemento de Gradle independientemente de los complementos de integración IDE. Por ejemplo, podemos enviar una nueva versión del complemento Eclipse que tiene varias correcciones de errores, sin afectar el lado de Gradle de Android.
A partir de abril de 2014, el complemento eclipse-gradle no es compatible con el complemento android-gradle:
Como respondió el problema 57668 del equipo de Android (planteado por @arcone)
Miembro del proyecto n. ° 2 x ... @ android.com
El complemento de eclipse no es compatible con el complemento de Android.
No podrá importar un proyecto gradle de Android en Eclipse utilizando la compatibilidad predeterminada de Gradle en Eclipse.
Para que funcione en Eclipse tendremos que cambiar el plugin de Gradle para Eclipse, de la misma manera que estamos modificando el soporte de Gradle en IntelliJ
Ese es el equipo de Android que está trabajando en el plugin de Gradle para IntelliJ y el plugin de gradle para Eclipse necesita ser actualizado también.
Hay esfuerzo en Nodeclipse para suavizar los tiempos de transición. Y continúen desarrollándose en Eclipse mientras aún experimentan o usan completamente Gradle.
Nodeclipse / Enide Gradle para Eclipse ( marketplace )
Algunas capturas de pantalla para Gradle for Eclipse: