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();
}