@NonNull @Override public Map<String, Object> getParameterInputs() { Map<String, Object> params = Maps.newHashMap(); params.put("javaResourcesFolder", options.getResourceDirectories()); params.put("isDebuggable", options.isDebuggable()); params.put("multiDexEnabled", options.isMultiDex()); params.put("minSdkVersion", options.getMinSdkVersion().getApiString()); params.put("javaMaxHeapSize", options.getJavaMaxHeapSize()); params.put("sourceCompatibility", options.getSourceCompatibility()); params.put("buildToolsRev", androidBuilder.getTargetInfo().getBuildTools().getRevision().toString()); return params; }
@NonNull @Override public Collection<File> getSecondaryFileOutputs() { ImmutableList.Builder<File> builder = ImmutableList.builder(); if (options.getOutputFile() != null) { builder.add(options.getOutputFile()); } if (options.getMappingFile() != null) { builder.add(options.getMappingFile()); } return builder.build(); }
if (options.getJavaMaxHeapSize() != null) { builder.addJvmArg("-Xmx" + options.getJavaMaxHeapSize()); } else { builder.addJvmArg("-Xmx1024M"); builder.addJvmArg("-Dfile.encoding=" + options.getEncoding()); if (options.isDebugJackInternals()) { builder.addJvmArg("-Dcom.android.jack.log=DEBUG"); if (options.isVerboseProcessing()) { builder.addArgs("--verbose", "info"); builder.addArgs("-D", "jack.dex.debug.vars=" + options.isDebuggable()); if (!options.getClasspaths().isEmpty()) { builder.addArgs("--classpath", FileUtils.joinFilePaths(options.getClasspaths())); for (File lib : options.getImportFiles()) { builder.addArgs("--import", lib.getAbsolutePath()); if (options.getDexOutputDirectory() != null) { builder.addArgs("--output-dex", options.getDexOutputDirectory().getAbsolutePath()); if (options.getOutputFile() != null) { builder.addArgs("--output-jack", options.getOutputFile().getAbsolutePath()); for (File file : options.getProguardFiles()) { builder.addArgs("--config-proguard", file.getAbsolutePath());
options.isDebuggable() ? DebugInfoLevel.FULL : DebugInfoLevel.NONE); if (options.isVerboseProcessing()) { config.setVerbosityLevel(VerbosityLevel.INFO); config.setClasspath(options.getClasspaths()); if (options.getDexOutputDirectory() != null) { config.setOutputDexDir(options.getDexOutputDirectory()); if (options.getOutputFile() != null) { config.setOutputJackFile(options.getOutputFile()); config.setImportedJackLibraryFiles(options.getImportFiles()); if (!DefaultApiVersion.isPreview(options.getMinSdkVersion())) { config.setAndroidMinApiLevel(options.getMinSdkVersion().getApiLevel()); config.setProguardConfigFiles(options.getProguardFiles()); config.setJarJarConfigFiles(options.getJarJarRuleFiles()); if (options.isMultiDex()) { if (DefaultApiVersion.isLegacyMultidex(options.getMinSdkVersion())) { config.setMultiDexKind(MultiDexKind.LEGACY); } else { config.setSourceEntries(options.getInputFiles()); if (options.getMappingFile() != null) { config.setProperty("jack.obfuscation.mapping.dump", "true"); config.setObfuscationMappingOutputFile(options.getMappingFile());
if (options.getDexOutputDirectory() != null) { FileUtils.mkdirs(options.getDexOutputDirectory()); if (options.getOutputFile() != null) { FileUtils.mkdirs(options.getOutputFile().getParentFile()); if (options.getCoverageMetadataFile() != null) { try { FileUtils.mkdirs(options.getCoverageMetadataFile().getParentFile()); } catch (RuntimeException ignored) { logger.warning( "Cannot create %1$s directory.", options.getCoverageMetadataFile().getParent()); if (options.getIncrementalDir() != null) { try { FileUtils.mkdirs(options.getIncrementalDir()); } catch (RuntimeException ignored) { logger.warning( "Cannot create %1$s directory jack incremental support disabled", options.getIncrementalDir()); options.setIncrementalDir(null); if (options.getAdditionalParameters().keySet().contains("jack.dex.optimize")) { logger.warning(DefaultDexOptions.OPTIMIZE_WARNING);
@NonNull @Override public Collection<SecondaryFile> getSecondaryFiles() { ImmutableList.Builder<SecondaryFile> builder = ImmutableList.builder(); builder.addAll( Iterables.transform(options.getProguardFiles(), SecondaryFile::nonIncremental)); builder.addAll( Iterables.transform(options.getJarJarRuleFiles(), SecondaryFile::nonIncremental)); builder.addAll( Iterables.transform( options.getAnnotationProcessorClassPath(), SecondaryFile::nonIncremental)); builder.addAll(Iterables.transform(getSourceFiles(), SecondaryFile::incremental)); builder.add( SecondaryFile.nonIncremental( new File(androidBuilder .getTargetInfo() .getBuildTools() .getPath(BuildToolInfo.PathId.JACK)))); return builder.build(); }
@NonNull JavaProcessExecutor javaProcessExecutor) throws ProcessException { checkState(jackOptions.getImportFiles().size() == 1, "Jill can convert a file at a time."); checkNotNull(jackOptions.getOutputFile(), "Jill output file is required."); builder.setMain("com.android.jill.Main"); if (jackOptions.getJavaMaxHeapSize() != null) { builder.addJvmArg("-Xmx" + jackOptions.getJavaMaxHeapSize()); builder.addArgs(jackOptions.getImportFiles().get(0).getAbsolutePath()); builder.addArgs("--output"); builder.addArgs(jackOptions.getOutputFile().getAbsolutePath()); if (jackOptions.isVerboseProcessing()) { builder.addArgs("--verbose");
checkState(jackOptions.getImportFiles().size() == 1, "Jill can convert a file at a time."); checkNotNull(jackOptions.getOutputFile(), "Jill output file is required."); new IllegalStateException("Cannot load Jill from build tools.")); File inputFile = jackOptions.getImportFiles().get(0); Api01TranslationTask translationTask; try { jillProvider.createConfig(com.android.jill.api.v01.Api01Config.class); config.setInputJavaBinaryFile(inputFile); config.setOutputJackFile(jackOptions.getOutputFile()); config.setVerbose(jackOptions.isVerboseProcessing()); config.setDebugInfo(jackOptions.isDebuggable());
inputFile, buildToolInfo.getRevision(), options.getJumboMode(), options.getDexOptimize(), options.getMinSdkVersion().getApiString(), options.getUseJill() ? JILL_USED : JACK_USED, options.getAdditionalParameters());
public File getMappingFile() { return options.getMappingFile(); }