Anula la versión de Java cuando construye un proyecto Cordova con gradle
Estoy tratando de construir un proyecto de Córdoba usando gradle como una herramienta de construcción. En el proyecto Cordova tengo mi propio plugin que requiere Java 1.7.
En el build.gradle que viene con Cordova la versión java es 1.6. Build.gradle:
- Ronda de Android en una imagen de fondo de Presentaciones, sólo las esquinas superior o inferior
- CollapsingToolbarLayout no reconoce el desplazamiento
- Java Regex lookahead toma demasiado tiempo
- Android Keystore Error "no pudo generar clave en keystore"
- Iconos de ActionBar con diferentes tamaños
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_6 targetCompatibility JavaVersion.VERSION_1_6 } }
El build.gradle viene con una gran advertencia que dice que es un archivo generado que no debe ser editado, la forma de personalizar el paso de generación de gradle es – como yo entiendo – para crear un archivo build-extras.gradle.
He creado un archivo build-extras.gradle y he probado lo siguiente:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } }
Pero no parece funcionar. Sigo recibiendo un error cuando construyo mi proyecto.
Error:
> strings in switch are not supported in -source 1.6 > switch (action) { > ^ (use -source 7 or higher to enable strings in switch)
¿Puede alguien por favor ayudarme a averiguar cómo configurar gradle para hacer este trabajo?
- Android FragmentLayout no está cargado
- No se puede tomar la captura de pantalla en Android L mediante programación
- Java.lang.RuntimeException: No se puede instanciar la actividad ComponentInfo {...}: java.lang.ClassNotFoundException: No encontró la clase
- Ant jar error: Execute failed: java.io.IOException: No se puede ejecutar el programa ... $ {aapt} ": error = 2, No hay tal archivo o directorio
- Android java, obtener más uso de memoria permitido
- ¿Cómo puedo hacer conexiones de URL asíncronas en Android?
- ¿Por qué se incluirían dependencias sólo en versiones de lanzamiento?
- ¿Cómo puedo reemplazar el calendario predeterminado del sistema operativo Android?
He estado tratando de resolver el mismo problema, y vine aquí con la esperanza de encontrar una respuesta! De todos modos, aunque no hubo respuesta, tu mención de build-extras.gradle
me puso en el camino correcto, y lo siguiente ahora funciona para mí … así que gracias.
Para empezar, pensé que también podría intentar usar la misma sintaxis que tú, para tratar de averiguar lo que estaba mal. Por lo que puedo decir que falla porque el archivo build-extras.gradle
no se fusiona mágicamente en build.gradle
, sino que es cargado y ejecutado usando el método Gradle apply from
approach. Y puesto que esto sucede antes del cierre del android
es demasiado temprano en el proceso, y esos valores del android
sobrepasan nuestros valores "adicionales".
(No tengo tiempo para ahondar más de lo que necesito en Gradle o Groovy, así que disculpas si mi terminología no es precisa …)
Sin embargo, podría conseguir que funcione si he utilizado el método postBuildExtras()
.
Si observa la parte inferior del archivo build.gradle
generado por Cordova, verá que si existe tal método (es decir, postBuildExtras
) en ext
, entonces se llama. Dado que esta es la última cosa en el script de configuración, supongo que el punto de este método es que podemos usarlo para anular cualquier cosa.
Por lo tanto, terminé con esto como mi build-extras.gradle
:
ext.postBuildExtras = { android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } }
En realidad tenía este trabajo muy temprano en mis investigaciones, pero siguió tratando de otros enfoques, ya que sospecho que esta técnica fallará cuando tratamos de tener múltiples build-extras.gradle
archivos – que, dado que ambos estamos hablando específicamente sobre Cordova plugins, Es muy probable.
Hay una técnica que parece prometedora para plugins, que es usar el elemento <framework>
en plugin.xml
, pero con este enfoque nunca podría obtener el plugin de módulo específico para cargar / importar / lo que sea. Voy a echar un vistazo a esto cuando llegue a plugin # 2, pero por ahora la técnica descrita anteriormente me da un gran salto más allá en donde estaba esta mañana, así que gracias de nuevo por la pista build-extras.gradle
. 😉
En cuanto a la respuesta de Mark, tengo una solución para agregar el build-extras.gradle
en el archivo plugin.xml
. Así que se agregará automáticamente a la carpeta de la plataforma en el lugar correcto.
<source-file src="src/android/lib/build-extras.gradle" target-dir="src/.." />