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

 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' 

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/

  • Defina una cadena en gradle y también use una aplicación específica de saborId
  • Gradle buildType / productFlavor utilizando inesperado buildConfigField
  • Después de la actualización - crash com.google.android.gms: play-services: 5.2.8
  • Aplicación de Android + Módulo de Java (Java 1.8)
  • Android Gradle produce una excepción TransformException: java.util.zip.ZipException: error en abrir archivo zip durante transformClassesWithDexForRelease
  • Error: Tiempo de espera esperando para bloquear caché de clase buildscript para el archivo de construcción cuando cambia minSdkVersion
  • Android Gradle build resultante apk contiene clases ofuscadas y no ofuscadas
  • Gradle excluir plugin en proyecto principal para subproyecto (s) específico (s)
  • ¿Cuál es el alcance de dependencia por defecto en Gradle en Android?
  • NoSuchMethodError si estoy usando okhttp 2.0 y la última actualización?
  • Cómo inyectar la configuración de Android a cada subproyecto con Gradle?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.