Java源码示例:com.android.build.api.transform.TransformInput
示例1
private void process(TransformInvocation transformInvocation) throws IOException {
List<LoaderInfo> loaderInfoList = new ArrayList<>();
for (TransformInput input : transformInvocation.getInputs()) {
for (JarInput jarInput : input.getJarInputs()) {
File file = jarInput.getFile();
JarFile jarFile = new JarFile(file);
Enumeration<JarEntry> entries = jarFile.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (isLoaderInfoEntry(entry)) {
System.out.println(TAG + "entry name: " + entry.getName());
String content = GradleUtils.getContent(jarFile, entry);
System.out.println(TAG + "content: " + content);
Type type = new TypeToken<List<LoaderInfo>>() {
}.getType();
List<LoaderInfo> loaderInfos = gson.fromJson(content, type);
if (loaderInfos != null) {
loaderInfoList.addAll(loaderInfos);
}
}
}
}
}
String json = gson.toJson(loaderInfoList);
generateInitClass(transformInvocation, json);
}
示例2
@Override
public void transform(TransformInvocation transformInvocation) throws TransformException, InterruptedException, IOException {
super.transform(transformInvocation);
UtilX.log("start transform");
long startTime = System.currentTimeMillis();
// 获取输入
Collection<TransformInput> inputs = transformInvocation.getInputs();
final TransformOutputProvider outputProvider = transformInvocation.getOutputProvider();
// 删除之前的输出
if (outputProvider != null) {
outputProvider.deleteAll();
}
for (TransformInput transformInput : inputs) {
for (DirectoryInput directoryInput : transformInput.getDirectoryInputs()) {
onEachDirectory(directoryInput, outputProvider);
}
for (JarInput jarInput : transformInput.getJarInputs()) {
onEachJar(jarInput, outputProvider);
}
}
long endTime = System.currentTimeMillis();
UtilX.log("end transform cost time " + (endTime - startTime) / 1000 + " s");
}
示例3
InlineRProcessor(Collection<TransformInput> inputs,
Function<byte[], byte[]> transform,
Function<QualifiedContent, Path> getTargetPath) {
this.inputs = inputs;
this.getTargetPath = getTargetPath;
this.transform = transform;
}
示例4
private static <T extends QualifiedContent> Stream<T> streamOf(
Collection<TransformInput> inputs,
Function<TransformInput, Collection<T>> mapping) {
Collection<T> list = inputs.stream()
.map(mapping)
.flatMap(Collection::stream)
.collect(Collectors.toList());
if (list.size() >= Runtime.getRuntime().availableProcessors())
return list.parallelStream();
else
return list.stream();
}