blob: 16fbf9fdbe885ce7aef64feb7015d7031fb569cf [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.jack.api.v01;
import com.android.jack.api.JackConfig;
import java.io.File;
import java.io.OutputStream;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.annotation.Nonnull;
/**
* A configuration for API level 01 of the Jack compiler.
*/
public interface Api01Config extends JackConfig {
/**
* Sets an {@link OutputStream} where Jack will write errors, warnings and other information.
* @param reporterKind The type of reporter
* @param reporterStream The stream where to write
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setReporter(@Nonnull ReporterKind reporterKind, @Nonnull OutputStream reporterStream)
throws ConfigurationException;
/**
* Sets the policy to follow when there is a collision between imported types.
* @param typeImportCollisionPolicy the collision policy for imported types
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setTypeImportCollisionPolicy(@Nonnull TypeCollisionPolicy typeImportCollisionPolicy)
throws ConfigurationException;
/**
* Sets the policy to follow when there is a collision between imported resources.
* @param resourceImportCollisionPolicy the collision policy for imported resources
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setResourceImportCollisionPolicy(
@Nonnull ResourceCollisionPolicy resourceImportCollisionPolicy) throws ConfigurationException;
/**
* Sets the Java source version (from 3 to 7).
* @param javaSourceVersion the Java source version
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setJavaSourceVersion(@Nonnull JavaSourceVersion javaSourceVersion)
throws ConfigurationException;
/**
* Sets the file where to write the obfuscation mapping. The file may already exist and will be
* overwritten.
* @param obfuscationMappingOutputFile the obfuscation mapping output file
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setObfuscationMappingOutputFile(@Nonnull File obfuscationMappingOutputFile)
throws ConfigurationException;
/**
* Sets the classpath.
* @param classpath The classpath as a list
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setClasspath(@Nonnull List<File> classpath) throws ConfigurationException;
/**
* Sets the Jack library files that will be imported into the output.
* @param importedJackLibraryFiles The Jack library files to import
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setImportedJackLibraryFiles(@Nonnull List<File> importedJackLibraryFiles)
throws ConfigurationException;
/**
* Sets the directories containing files to import into the output as meta-files.
* @param metaDirs The directories containing the meta-files
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setMetaDirs(@Nonnull List<File> metaDirs) throws ConfigurationException;
/**
* Sets the directories containing files to import into the output as resources.
* @param resourceDirs The directories containing the resources
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setResourceDirs(@Nonnull List<File> resourceDirs) throws ConfigurationException;
/**
* Sets the directory that will be used to store data for incremental support. This directory must
* already exist.
* @param incrementalDir The directory used for incremental data
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setIncrementalDir(@Nonnull File incrementalDir) throws ConfigurationException;
/**
* Sets the directory that will be used to write dex files and resources. This directory must
* already exist.
* @param outputDexDir The output directory for dex files and resources
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setOutputDexDir(@Nonnull File outputDexDir) throws ConfigurationException;
/**
* Sets the file where the output Jack library will be written. The file may already exist and
* will be overwritten.
* @param outputJackFile The output Jack library file
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setOutputJackFile(@Nonnull File outputJackFile) throws ConfigurationException;
/**
* Sets JarJar configuration files to use for repackaging.
* @param jarjarConfigFiles The JarJar configuration files
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setJarJarConfigFiles(@Nonnull List<File> jarjarConfigFiles) throws ConfigurationException;
/**
* Sets ProGuard configuration files.
* @param proguardConfigFiles The ProGuard configuration files
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setProguardConfigFiles(@Nonnull List<File> proguardConfigFiles)
throws ConfigurationException;
/**
* Set how much debug info should be emitted.
* @param debugInfoLevel The level of debug info to emit
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setDebugInfoLevel(@Nonnull DebugInfoLevel debugInfoLevel) throws ConfigurationException;
/**
* Sets whether to allow splitting the output in several dex files, and which method to use.
* @param multiDexKind the multidex kind
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setMultiDexKind(@Nonnull MultiDexKind multiDexKind) throws ConfigurationException;
/**
* Sets the verbosity level.
* @param verbosityLevel the verbosity level
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setVerbosityLevel(@Nonnull VerbosityLevel verbosityLevel) throws ConfigurationException;
/**
* Sets the class names of the annotation processors to run.
* @param processorNames Annotation processor class names
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setProcessorNames(@Nonnull List<String> processorNames) throws ConfigurationException;
/**
* Sets the path where to find annotation processors.
* @param processorPath The processor path as a list
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setProcessorPath(@Nonnull List<File> processorPath) throws ConfigurationException;
/**
* Sets options for the annotation processors.
* @param processorOptions The processor options as a map
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setProcessorOptions(@Nonnull Map<String, String> processorOptions)
throws ConfigurationException;
/**
* Sets the Java source files entries to compile.
* @param sourceEntries The source entries
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setSourceEntries(@Nonnull Collection<File> sourceEntries) throws ConfigurationException;
/**
* Sets the value for the given property.
* @param key The name of the property
* @param value The value to set the property to
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
void setProperty(@Nonnull String key, @Nonnull String value) throws ConfigurationException;
/**
* Creates an instance of the {@link Api01CompilationTask} according to this configuration.
* @return The {@link Api01CompilationTask}
* @throws ConfigurationException if something is wrong in Jack's configuration
*/
@Nonnull
Api01CompilationTask getTask() throws ConfigurationException;
}