sir*_*ine 4 android build gradle build.gradle
我想在gradle构建期间自动解析和保存json对象到资产或原始目录.我有一个java Json解析类,我知道如何从gradle运行它.我不知道的是如何将结果或该类保存到上述任一文件夹中.下面是我将如何运行脚本的示例.我正在尝试在目前的状态下做些什么?
package com.mrhaki.java;
public class SimpleParser {
public static void main(String[] args) {
//parse content
}
}
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
我认为没有必要使用外部JSON解析器.而是使用JsonSlurper.工作得很好.在上面的任务中,创建一个文件,在那里写入解析的内容并将其保存在声明的文件夹中.就这样.到底是什么,你不知道?
它将类似于:
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
}
Run Code Online (Sandbox Code Playgroud)
就我所知,这就是全部.
小智 9
仅仅为了更详细的回答,我最近必须做类似的事情,迭代一个简单的json文件并生成一个strings.xml预构建.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')
}
Run Code Online (Sandbox Code Playgroud)
http://www.veltema.jp/2014/08/27/generating-strings.xml-from-JSON-at-Build-in-Android-Studio/
| 归档时间: |
|
| 查看次数: |
19400 次 |
| 最近记录: |