| // Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| package dx; | |
| import java.io.File; | |
| import java.io.IOException; | |
| import org.gradle.api.Action; | |
| import org.gradle.api.DefaultTask; | |
| import org.gradle.api.UncheckedIOException; | |
| import org.gradle.api.file.FileCollection; | |
| import org.gradle.api.file.FileTree; | |
| import org.gradle.api.tasks.InputFiles; | |
| import org.gradle.api.tasks.OutputDirectory; | |
| import org.gradle.api.tasks.OutputFile; | |
| import org.gradle.api.tasks.TaskAction; | |
| import org.gradle.process.ExecSpec; | |
| import utils.Utils; | |
| public class DexMerger extends DefaultTask { | |
| private FileCollection source; | |
| private File destination; | |
| private File dexMergerExecutable; | |
| private boolean debug; | |
| @InputFiles | |
| public FileCollection getSource() { | |
| return source; | |
| } | |
| public void setSource(FileCollection source) { | |
| this.source = source; | |
| } | |
| @OutputFile | |
| public File getDestination() { | |
| return destination; | |
| } | |
| public void setDestination(File destination) { | |
| this.destination = destination; | |
| } | |
| public File getDexMergerExecutable() { | |
| return dexMergerExecutable; | |
| } | |
| public void setDexMergerExecutable(File dexMergerExecutable) { | |
| this.dexMergerExecutable = dexMergerExecutable; | |
| } | |
| @TaskAction | |
| void exec() { | |
| getProject().exec(new Action<ExecSpec>() { | |
| @Override | |
| public void execute(ExecSpec execSpec) { | |
| try { | |
| if (dexMergerExecutable == null) { | |
| dexMergerExecutable = Utils.dexMergerExecutable(); | |
| } | |
| execSpec.setExecutable(dexMergerExecutable); | |
| execSpec.args(destination.getCanonicalPath()); | |
| execSpec.args(source.getFiles()); | |
| } catch (IOException e) { | |
| throw new UncheckedIOException(e); | |
| } | |
| } | |
| }); | |
| } | |
| } |