DexProcessBuilder builder = new DexProcessBuilder(outDexFolder); builder.setVerbose(mVerboseExec) .setIncremental(incremental) .setNoOptimize(!optimize) .setMultiDex(multidex) .setMainDexList(mainDexList) .addInputs(preDexedLibraries) .addInputs(verifiedInputs.build()); builder.additionalParameters(additionalParameters); JavaProcessInfo javaProcessInfo = builder.build(buildToolInfo, dexOptions);
throw new RuntimeException("Exception while checking library jar", e); DexProcessBuilder builder = new DexProcessBuilder(outFile); builder.setVerbose(mVerboseExec) .setMultiDex(multiDex) .addInput(inputFile);
args.fileNames = Iterables.toArray(processBuilder.getFilesToAdd(), String.class); if (processBuilder.getOutputFile().isDirectory() && !processBuilder.isMultiDex()) { args.outName = new File(processBuilder.getOutputFile(), "classes.dex").getPath(); args.jarOutput = false; } else { String outputFileAbsolutePath = processBuilder.getOutputFile().getAbsolutePath(); args.outName = outputFileAbsolutePath; args.jarOutput = outputFileAbsolutePath.endsWith(SdkConstants.DOT_JAR); args.multiDex = processBuilder.isMultiDex(); if (processBuilder.getMainDexList() != null) { args.mainDexListFile = processBuilder.getMainDexList().getPath(); args.verbose = processBuilder.isVerbose();
DexProcessBuilder builder = new DexProcessBuilder(outDexFolder); builder.setVerbose(mVerboseExec) .setMultiDex(multidex) .setMainDexList(mainDexList) .addInputs(verifiedInputs.build());
private void dexOutOfProcess( @NonNull final DexProcessBuilder builder, @NonNull final DexOptions dexOptions, @NonNull final ProcessOutputHandler processOutputHandler) throws ProcessException, InterruptedException { final String submission = Joiner.on(',').join(builder.getInputs()); mLogger.verbose("Dexing out-of-process : %1$s", submission); try { Callable<Void> task = () -> { JavaProcessInfo javaProcessInfo = builder.build(mTargetInfo.getBuildTools(), dexOptions); ProcessResult result = mJavaProcessExecutor.execute(javaProcessInfo, processOutputHandler); result.rethrowFailure().assertNormalExitValue(); return null; }; Stopwatch stopwatch = Stopwatch.createStarted(); // this is a hack, we always spawn a new process for dependencies.jar so it does // get built in parallel with the slices, this is only valid for InstantRun mode. if (submission.contains("dependencies.jar")) { task.call(); } else { sDexExecutorService.submit(task).get(); } mLogger.verbose("Dexing %1$s took %2$s.", submission, stopwatch.toString()); } catch (Exception e) { throw new ProcessException(e); } }
builder.addArgs(getFilesToAdd());
private void dexInProcess( @NonNull final DexProcessBuilder builder, @NonNull final DexOptions dexOptions, @NonNull final ProcessOutputHandler outputHandler) throws IOException, ProcessException { final String submission = Joiner.on(',').join(builder.getInputs()); mLogger.verbose("Dexing in-process : %1$s", submission); try { sDexExecutorService.submit(() -> { Stopwatch stopwatch = Stopwatch.createStarted(); ProcessResult result = DexWrapper.run(builder, dexOptions, outputHandler); result.assertNormalExitValue(); mLogger.verbose("Dexing %1$s took %2$s.", submission, stopwatch.toString()); return null; }).get(); } catch (Exception e) { throw new ProcessException(e); } }
builder.addArgs(getFilesToAdd(buildToolInfo));
throw new RuntimeException("Exception while checking library jar", e); DexProcessBuilder builder = new DexProcessBuilder(outFile); builder.setVerbose(verbose) .setMultiDex(multiDex) .addInput(inputFile); JavaProcessInfo javaProcessInfo = builder.build(buildToolInfo, dexOptions);