Tarea Gradle personalizada para guardar Json analizado en el archivo. Androide
Quiero automatizar el análisis sintáctico y el ahorro de un objeto de json al directorio del activo o del raw durante gradle build. Tengo una clase java Json parsing y sé cómo ejecutarlo desde gradle. Lo que no sé es cómo guardar los resultados o esa clase en cualquiera de las carpetas anteriores. A continuación se muestra un ejemplo de cómo voy a ejecutar el script. Es lo que estoy tratando de hacer posible en su estado actual ??
package com.mrhaki.java; public class SimpleParser { public static void main(String[] args) { //parse content } }
Gradle Build
- gradle: ejecuta código dependiendo del tipo de construcción (o variante)
- Gradle buildConfigField BuildConfig no puede resolver el símbolo
- Error: "El proceso de daemon recién creado tiene un contexto diferente del esperado"
- Android Gradle Jacoco: instrumentación offline para pruebas de integración
- Android Studio marca la sintaxis como error, pero gradle compila
apply plugin: 'java' task(runSimpleParser, dependsOn: 'classes', type: JavaExec) { main = 'com.mrhaki.java.SimpleParser' classpath = sourceSets.main.runtimeClasspath args 'mrhaki' systemProperty 'simpleparser.message', 'Hello ' } defaultTasks 'runSimpleParser'
- No se pudo encontrar la propiedad 'aild' en el conjunto de fuentes principal
- Anulación del prefijo del paquete de permisos GCM con Gradle
- Android studio 2.0 Vista previa 8 con gradle plugin 2.0.0-alhpa8, advertencia de memoria a pesar de tamaño de montón a 4Gb
- Definición de 'resValue' utilizando una definición de cadena existente
- Android Gradle Lee el nombre de la aplicación de strings.xml
- Android Studio No se pudo llamar a IncrementalTask.taskAction () en la tarea ': project: dexDebug'
- Gradle 0.9. + / 0.9.2 error: No se puede cargar la clase 'com.android.builder.testing.api.DeviceProvider'
- Google Play Location Services 9.2.0 falta la atribución de Google Recurso de Android
Pienso que no hay necesidad de utilizar el analizador externo de JSON. En su lugar, utilice JsonSlurper
. Funciona muy bien. En la tarea anterior, cree un archivo, escriba el contenido analizado allí y guárdelo en la carpeta declarada. Eso es todo. ¿Qué es exactamente lo que no sabes?
Será similar a:
task json() << { def f1 = new File('path/to/file1') def f2 = new File('path/to/file2') f1.text //= set content here f2.text //= set content here }
Eso es todo lo que entendí.
Sólo para una respuesta un poco más detallada, tuve que hacer algo similar recientemente, iterando sobre un simple archivo json y generando un strings.xml pre-build. El bit relevante de build.gradle:
import groovy.json.JsonSlurper task generateStrings { def inputFile = new File("app/src/main/assets/localized_strings.json") def json = new JsonSlurper().parseText(inputFile.text) def sw = new StringWriter() def xml = new groovy.xml.MarkupBuilder(sw) //add json values to the xml builder xml.resources() { json.each { k, v -> string(name: "${k}", "${v}") } } def stringsFile = new File("app/src/main/res/values/strings.xml") stringsFile.write(sw.toString()) } gradle.projectsEvaluated { preBuild.dependsOn('generateStrings') }
http://www.veltema.jp/2014/08/27/generating-strings.xml-from-JSON-at-Build-in-Android-Studio/