com.android.builder.core
Class AndroidBuilder

java.lang.Object
  extended by com.android.builder.core.AndroidBuilder

public class AndroidBuilder
extends java.lang.Object

This is the main builder class. It is given all the data to process the build (such as DefaultProductFlavors, DefaultBuildType and dependencies) and use them when doing specific build steps. To use: create a builder with AndroidBuilder(String, String, ILogger, boolean) then build steps can be done with mergeManifests(java.io.File, java.util.List, java.util.List, String, int, String, String, String, String, com.android.manifmerger.ManifestMerger2.MergeType, java.util.Map) processTestManifest2(String, String, String, String, String, Boolean, Boolean, java.util.List, java.io.File) processResources(java.io.File, java.io.File, java.io.File, java.util.List, String, String, String, String, String, com.android.builder.core.VariantConfiguration.Type, boolean, com.android.builder.model.AaptOptions, java.util.Collection, boolean) compileAllAidlFiles(java.util.List, java.io.File, java.io.File, java.util.List, com.android.builder.compiling.DependencyFileProcessor) convertByteCode(Iterable, Iterable, java.io.File, DexOptions, java.util.List, boolean) packageApk(String, java.io.File, java.util.Collection, String, java.util.Collection, java.util.Set, boolean, com.android.builder.model.SigningConfig, com.android.builder.model.PackagingOptions, String) Java compilation is not handled but the builder provides the bootclasspath with getBootClasspath().


Constructor Summary
AndroidBuilder(java.lang.String projectId, java.lang.String createdBy, com.android.utils.ILogger logger, boolean verboseExec)
          Creates an AndroidBuilder.
 
Method Summary
 void compileAidlFile(java.io.File sourceFolder, java.io.File aidlFile, java.io.File sourceOutputDir, java.io.File parcelableOutputDir, java.util.List<java.io.File> importFolders, DependencyFileProcessor dependencyFileProcessor)
          Compiles the given aidl file.
 void compileAllAidlFiles(java.util.List<java.io.File> sourceFolders, java.io.File sourceOutputDir, java.io.File parcelableOutputDir, java.util.List<java.io.File> importFolders, DependencyFileProcessor dependencyFileProcessor)
          Compiles all the aidl files found in the given source folders.
 void compileAllRenderscriptFiles(java.util.List<java.io.File> sourceFolders, java.util.List<java.io.File> importFolders, java.io.File sourceOutputDir, java.io.File resOutputDir, java.io.File objOutputDir, java.io.File libOutputDir, int targetApi, boolean debugBuild, int optimLevel, boolean ndkMode, boolean supportMode, java.util.Set<java.lang.String> abiFilters)
          Compiles all the renderscript files found in the given source folders.
 void convertByteCode(java.lang.Iterable<java.io.File> inputs, java.lang.Iterable<java.io.File> preDexedLibraries, java.io.File outDexFolder, DexOptions dexOptions, java.util.List<java.lang.String> additionalParameters, boolean incremental)
          Converts the bytecode to Dalvik format
static com.android.builder.model.ClassField createClassField(java.lang.String type, java.lang.String name, java.lang.String value)
           
 void generateApkData(java.io.File apkFile, java.io.File outResFolder, java.lang.String mainPkgName, java.lang.String resName)
           
 void generateApkDataEntryInManifest(java.io.File manifestFile)
           
 com.android.ide.common.internal.PngCruncher getAaptCruncher()
          Returns an PngCruncher using aapt underneath
 java.util.List<java.lang.String> getBootClasspath()
          Helper method to get the boot classpath to be used during compilation.
 com.android.ide.common.internal.CommandLineRunner getCommandLineRunner()
           
 java.util.Set<java.io.File> getCompileClasspath(VariantConfiguration variantConfiguration)
          Returns the compile classpath for this config.
 java.util.List<java.io.File> getLeafFolders(java.lang.String extension, java.util.List<java.io.File>... importFolders)
          Computes and returns the leaf folders based on a given file extension.
 java.util.Set<java.io.File> getPackagedJars(VariantConfiguration variantConfiguration)
          Returns the list of packaged jars for this config.
 java.io.File getRenderScriptSupportJar()
          Returns the jar file for the renderscript mode.
 SdkInfo getSdkInfo()
          Returns the SdkInfo, if set.
 java.io.File getSupportNativeLibFolder()
          Returns the native lib folder for the renderscript mode.
 com.android.sdklib.IAndroidTarget getTarget()
          Returns the compilation target, if set.
 java.lang.String getTargetCodename()
           
 TargetInfo getTargetInfo()
          Returns the TargetInfo, if set.
 boolean isPreviewTarget()
          Returns whether the compilation target is a preview.
 void mergeManifests(java.io.File mainManifest, java.util.List<java.io.File> manifestOverlays, java.util.List<? extends ManifestDependency> libraries, java.lang.String packageOverride, int versionCode, java.lang.String versionName, java.lang.String minSdkVersion, java.lang.String targetSdkVersion, java.lang.String outManifestLocation, com.android.manifmerger.ManifestMerger2.MergeType mergeType, java.util.Map<java.lang.String,java.lang.String> placeHolders)
          Invoke the Manifest Merger version 2.
 void packageApk(java.lang.String androidResPkgLocation, java.io.File dexFolder, java.util.Collection<java.io.File> packagedJars, java.lang.String javaResourcesLocation, java.util.Collection<java.io.File> jniLibsFolders, java.util.Set<java.lang.String> abiFilters, boolean jniDebugBuild, com.android.builder.model.SigningConfig signingConfig, com.android.builder.model.PackagingOptions packagingOptions, java.lang.String outApkLocation)
          Packages the apk.
 void preDexLibrary(java.io.File inputFile, java.io.File outFile, DexOptions dexOptions)
          Converts the bytecode to Dalvik format
static void preDexLibrary(java.io.File inputFile, java.io.File outFile, DexOptions dexOptions, com.android.sdklib.BuildToolInfo buildToolInfo, boolean verbose, com.android.ide.common.internal.CommandLineRunner commandLineRunner)
           
 void processManifest(java.io.File mainManifest, java.util.List<java.io.File> manifestOverlays, java.util.List<? extends ManifestDependency> libraries, java.lang.String packageOverride, int versionCode, java.lang.String versionName, java.lang.String minSdkVersion, java.lang.String targetSdkVersion, java.lang.String outManifestLocation)
          Merges all the manifests into a single manifest
 void processResources(java.io.File manifestFile, java.io.File resFolder, java.io.File assetsDir, java.util.List<? extends SymbolFileProvider> libraries, java.lang.String packageForR, java.lang.String sourceOutputDir, java.lang.String symbolOutputDir, java.lang.String resPackageOutput, java.lang.String proguardOutput, VariantConfiguration.Type type, boolean debuggable, com.android.builder.model.AaptOptions options, java.util.Collection<java.lang.String> resourceConfigs, boolean enforceUniquePackageName)
          Process the resources and generate R.java and/or the packaged resources.
 void processTestManifest(java.lang.String testApplicationId, java.lang.String minSdkVersion, java.lang.String targetSdkVersion, java.lang.String testedApplicationId, java.lang.String instrumentationRunner, java.lang.Boolean handleProfiling, java.lang.Boolean functionalTest, java.util.List<? extends ManifestDependency> libraries, java.io.File outManifest)
          Creates the manifest for a test variant
 void processTestManifest2(java.lang.String testApplicationId, java.lang.String minSdkVersion, java.lang.String targetSdkVersion, java.lang.String testedApplicationId, java.lang.String instrumentationRunner, java.lang.Boolean handleProfiling, java.lang.Boolean functionalTest, java.util.List<? extends ManifestDependency> libraries, java.io.File outManifest)
          Creates the manifest for a test variant
 void setTargetInfo(SdkInfo sdkInfo, TargetInfo targetInfo)
          Sets the SdkInfo and the targetInfo on the builder.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AndroidBuilder

public AndroidBuilder(@NonNull
                      java.lang.String projectId,
                      @Nullable
                      java.lang.String createdBy,
                      @NonNull
                      com.android.utils.ILogger logger,
                      boolean verboseExec)
Creates an AndroidBuilder.

verboseExec is needed on top of the ILogger due to remote exec tools not being able to output info and verbose messages separately.

Parameters:
createdBy - the createdBy String for the apk manifest.
logger - the Logger
verboseExec - whether external tools are launched in verbose mode
Method Detail

setTargetInfo

public void setTargetInfo(@NonNull
                          SdkInfo sdkInfo,
                          @NonNull
                          TargetInfo targetInfo)
Sets the SdkInfo and the targetInfo on the builder. This is required to actually build (some of the steps).

Parameters:
sdkInfo - the SdkInfo
targetInfo - the TargetInfo
See Also:
SdkLoader

getSdkInfo

@Nullable
public SdkInfo getSdkInfo()
Returns the SdkInfo, if set.


getTargetInfo

@Nullable
public TargetInfo getTargetInfo()
Returns the TargetInfo, if set.


getTarget

@Nullable
public com.android.sdklib.IAndroidTarget getTarget()
Returns the compilation target, if set.


isPreviewTarget

public boolean isPreviewTarget()
Returns whether the compilation target is a preview.


getTargetCodename

public java.lang.String getTargetCodename()

getBootClasspath

@NonNull
public java.util.List<java.lang.String> getBootClasspath()
Helper method to get the boot classpath to be used during compilation.


getRenderScriptSupportJar

@Nullable
public java.io.File getRenderScriptSupportJar()
Returns the jar file for the renderscript mode. This may return null if the SDK has not been loaded yet.

Returns:
the jar file, or null.
See Also:
setTargetInfo(com.android.builder.sdk.SdkInfo, com.android.builder.sdk.TargetInfo)

getCompileClasspath

@NonNull
public java.util.Set<java.io.File> getCompileClasspath(@NonNull
                                                               VariantConfiguration variantConfiguration)
Returns the compile classpath for this config. If the config tests a library, this will include the classpath of the tested config. If the SDK was loaded, this may include the renderscript support jar.

Returns:
a non null, but possibly empty set.

getPackagedJars

@NonNull
public java.util.Set<java.io.File> getPackagedJars(@NonNull
                                                           VariantConfiguration variantConfiguration)
Returns the list of packaged jars for this config. If the config tests a library, this will include the jars of the tested config If the SDK was loaded, this may include the renderscript support jar.

Returns:
a non null, but possibly empty list.

getSupportNativeLibFolder

@Nullable
public java.io.File getSupportNativeLibFolder()
Returns the native lib folder for the renderscript mode. This may return null if the SDK has not been loaded yet.

Returns:
the folder, or null.
See Also:
setTargetInfo(com.android.builder.sdk.SdkInfo, com.android.builder.sdk.TargetInfo)

getAaptCruncher

@NonNull
public com.android.ide.common.internal.PngCruncher getAaptCruncher()
Returns an PngCruncher using aapt underneath

Returns:
an PngCruncher object

getCommandLineRunner

@NonNull
public com.android.ide.common.internal.CommandLineRunner getCommandLineRunner()

createClassField

@NonNull
public static com.android.builder.model.ClassField createClassField(@NonNull
                                                                            java.lang.String type,
                                                                            @NonNull
                                                                            java.lang.String name,
                                                                            @NonNull
                                                                            java.lang.String value)

mergeManifests

public void mergeManifests(@NonNull
                           java.io.File mainManifest,
                           @NonNull
                           java.util.List<java.io.File> manifestOverlays,
                           @NonNull
                           java.util.List<? extends ManifestDependency> libraries,
                           java.lang.String packageOverride,
                           int versionCode,
                           java.lang.String versionName,
                           @Nullable
                           java.lang.String minSdkVersion,
                           @Nullable
                           java.lang.String targetSdkVersion,
                           @NonNull
                           java.lang.String outManifestLocation,
                           com.android.manifmerger.ManifestMerger2.MergeType mergeType,
                           java.util.Map<java.lang.String,java.lang.String> placeHolders)
Invoke the Manifest Merger version 2.


processManifest

public void processManifest(@NonNull
                            java.io.File mainManifest,
                            @NonNull
                            java.util.List<java.io.File> manifestOverlays,
                            @NonNull
                            java.util.List<? extends ManifestDependency> libraries,
                            java.lang.String packageOverride,
                            int versionCode,
                            java.lang.String versionName,
                            @Nullable
                            java.lang.String minSdkVersion,
                            @Nullable
                            java.lang.String targetSdkVersion,
                            @NonNull
                            java.lang.String outManifestLocation)
Merges all the manifests into a single manifest

Parameters:
mainManifest - The main manifest of the application.
manifestOverlays - manifest overlays coming from flavors and build types
libraries - the library dependency graph
packageOverride - a package name override. Can be null.
versionCode - a version code to inject in the manifest or -1 to do nothing.
versionName - a version name to inject in the manifest or null to do nothing.
minSdkVersion - a minSdkVersion to inject in the manifest or -1 to do nothing.
targetSdkVersion - a targetSdkVersion to inject in the manifest or -1 to do nothing.
outManifestLocation - the output location for the merged manifest
See Also:
VariantConfiguration.getMainManifest(), VariantConfiguration.getManifestOverlays(), VariantConfiguration.getDirectLibraries(), VariantConfiguration.getMergedFlavor(), DefaultProductFlavor.getVersionCode(), DefaultProductFlavor.getVersionName(), DefaultProductFlavor.getMinSdkVersion(), DefaultProductFlavor.getTargetSdkVersion()

processTestManifest

public void processTestManifest(@NonNull
                                java.lang.String testApplicationId,
                                @Nullable
                                java.lang.String minSdkVersion,
                                @Nullable
                                java.lang.String targetSdkVersion,
                                @NonNull
                                java.lang.String testedApplicationId,
                                @NonNull
                                java.lang.String instrumentationRunner,
                                @NonNull
                                java.lang.Boolean handleProfiling,
                                @NonNull
                                java.lang.Boolean functionalTest,
                                @NonNull
                                java.util.List<? extends ManifestDependency> libraries,
                                @NonNull
                                java.io.File outManifest)
Creates the manifest for a test variant

Parameters:
testApplicationId - the application id of the test application
minSdkVersion - the minSdkVersion of the test application
targetSdkVersion - the targetSdkVersion of the test application
testedApplicationId - the application id of the tested application
instrumentationRunner - the name of the instrumentation runner
handleProfiling - whether or not the Instrumentation object will turn profiling on and off
functionalTest - whether or not the Instrumentation class should run as a functional test
libraries - the library dependency graph
outManifest - the output location for the merged manifest
See Also:
VariantConfiguration.getApplicationId(), VariantConfiguration.getTestedConfig(), VariantConfiguration.getMinSdkVersion(), VariantConfiguration.getTestedApplicationId(), VariantConfiguration.getInstrumentationRunner(), VariantConfiguration.getHandleProfiling(), VariantConfiguration.getFunctionalTest(), VariantConfiguration.getDirectLibraries()

processTestManifest2

public void processTestManifest2(@NonNull
                                 java.lang.String testApplicationId,
                                 @Nullable
                                 java.lang.String minSdkVersion,
                                 @Nullable
                                 java.lang.String targetSdkVersion,
                                 @NonNull
                                 java.lang.String testedApplicationId,
                                 @NonNull
                                 java.lang.String instrumentationRunner,
                                 @NonNull
                                 java.lang.Boolean handleProfiling,
                                 @NonNull
                                 java.lang.Boolean functionalTest,
                                 @NonNull
                                 java.util.List<? extends ManifestDependency> libraries,
                                 @NonNull
                                 java.io.File outManifest)
Creates the manifest for a test variant

Parameters:
testApplicationId - the application id of the test application
minSdkVersion - the minSdkVersion of the test application
targetSdkVersion - the targetSdkVersion of the test application
testedApplicationId - the application id of the tested application
instrumentationRunner - the name of the instrumentation runner
handleProfiling - whether or not the Instrumentation object will turn profiling on and off
functionalTest - whether or not the Instrumentation class should run as a functional test
libraries - the library dependency graph
outManifest - the output location for the merged manifest
See Also:
VariantConfiguration.getApplicationId(), VariantConfiguration.getTestedConfig(), VariantConfiguration.getMinSdkVersion(), VariantConfiguration.getTestedApplicationId(), VariantConfiguration.getInstrumentationRunner(), VariantConfiguration.getHandleProfiling(), VariantConfiguration.getFunctionalTest(), VariantConfiguration.getDirectLibraries()

processResources

public void processResources(@NonNull
                             java.io.File manifestFile,
                             @NonNull
                             java.io.File resFolder,
                             @Nullable
                             java.io.File assetsDir,
                             @NonNull
                             java.util.List<? extends SymbolFileProvider> libraries,
                             @Nullable
                             java.lang.String packageForR,
                             @Nullable
                             java.lang.String sourceOutputDir,
                             @Nullable
                             java.lang.String symbolOutputDir,
                             @Nullable
                             java.lang.String resPackageOutput,
                             @Nullable
                             java.lang.String proguardOutput,
                             VariantConfiguration.Type type,
                             boolean debuggable,
                             @NonNull
                             com.android.builder.model.AaptOptions options,
                             @NonNull
                             java.util.Collection<java.lang.String> resourceConfigs,
                             boolean enforceUniquePackageName)
                      throws java.io.IOException,
                             java.lang.InterruptedException,
                             com.android.ide.common.internal.LoggedErrorException
Process the resources and generate R.java and/or the packaged resources.

Parameters:
manifestFile - the location of the manifest file
resFolder - the merged res folder
assetsDir - the merged asset folder
libraries - the flat list of libraries
packageForR - Package override to generate the R class in a different package.
sourceOutputDir - optional source folder to generate R.java
resPackageOutput - optional filepath for packaged resources
proguardOutput - optional filepath for proguard file to generate
type - the type of the variant being built
debuggable - whether the app is debuggable
options - the AaptOptions
resourceConfigs - a list of resource config filters to pass to aapt.
enforceUniquePackageName - if true method will fail if some libraries share the same package name
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

generateApkData

public void generateApkData(@NonNull
                            java.io.File apkFile,
                            @NonNull
                            java.io.File outResFolder,
                            @NonNull
                            java.lang.String mainPkgName,
                            @NonNull
                            java.lang.String resName)
                     throws java.lang.InterruptedException,
                            com.android.ide.common.internal.LoggedErrorException,
                            java.io.IOException
Throws:
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException
java.io.IOException

generateApkDataEntryInManifest

public void generateApkDataEntryInManifest(@NonNull
                                           java.io.File manifestFile)
                                    throws java.lang.InterruptedException,
                                           com.android.ide.common.internal.LoggedErrorException,
                                           java.io.IOException
Throws:
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException
java.io.IOException

compileAllAidlFiles

public void compileAllAidlFiles(@NonNull
                                java.util.List<java.io.File> sourceFolders,
                                @NonNull
                                java.io.File sourceOutputDir,
                                @Nullable
                                java.io.File parcelableOutputDir,
                                @NonNull
                                java.util.List<java.io.File> importFolders,
                                @Nullable
                                DependencyFileProcessor dependencyFileProcessor)
                         throws java.io.IOException,
                                java.lang.InterruptedException,
                                com.android.ide.common.internal.LoggedErrorException
Compiles all the aidl files found in the given source folders.

Parameters:
sourceFolders - all the source folders to find files to compile
sourceOutputDir - the output dir in which to generate the source code
importFolders - import folders
dependencyFileProcessor - the dependencyFileProcessor to record the dependencies of the compilation.
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

compileAidlFile

public void compileAidlFile(@NonNull
                            java.io.File sourceFolder,
                            @NonNull
                            java.io.File aidlFile,
                            @NonNull
                            java.io.File sourceOutputDir,
                            @Nullable
                            java.io.File parcelableOutputDir,
                            @NonNull
                            java.util.List<java.io.File> importFolders,
                            @Nullable
                            DependencyFileProcessor dependencyFileProcessor)
                     throws java.io.IOException,
                            java.lang.InterruptedException,
                            com.android.ide.common.internal.LoggedErrorException
Compiles the given aidl file.

Parameters:
aidlFile - the AIDL file to compile
sourceOutputDir - the output dir in which to generate the source code
importFolders - all the import folders, including the source folders.
dependencyFileProcessor - the dependencyFileProcessor to record the dependencies of the compilation.
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

compileAllRenderscriptFiles

public void compileAllRenderscriptFiles(@NonNull
                                        java.util.List<java.io.File> sourceFolders,
                                        @NonNull
                                        java.util.List<java.io.File> importFolders,
                                        @NonNull
                                        java.io.File sourceOutputDir,
                                        @NonNull
                                        java.io.File resOutputDir,
                                        @NonNull
                                        java.io.File objOutputDir,
                                        @NonNull
                                        java.io.File libOutputDir,
                                        int targetApi,
                                        boolean debugBuild,
                                        int optimLevel,
                                        boolean ndkMode,
                                        boolean supportMode,
                                        @Nullable
                                        java.util.Set<java.lang.String> abiFilters)
                                 throws java.io.IOException,
                                        java.lang.InterruptedException,
                                        com.android.ide.common.internal.LoggedErrorException
Compiles all the renderscript files found in the given source folders. Right now this is the only way to compile them as the renderscript compiler requires all renderscript files to be passed for all compilation. Therefore whenever a renderscript file or header changes, all must be recompiled.

Parameters:
sourceFolders - all the source folders to find files to compile
importFolders - all the import folders.
sourceOutputDir - the output dir in which to generate the source code
resOutputDir - the output dir in which to generate the bitcode file
targetApi - the target api
debugBuild - whether the build is debug
optimLevel - the optimization level
ndkMode -
supportMode - support mode flag to generate .so files.
abiFilters - ABI filters in case of support mode
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

getLeafFolders

@NonNull
public java.util.List<java.io.File> getLeafFolders(@NonNull
                                                           java.lang.String extension,
                                                           java.util.List<java.io.File>... importFolders)
Computes and returns the leaf folders based on a given file extension. This looks through all the given root import folders, and recursively search for leaf folders containing files matching the given extensions. All the leaf folders are gathered and returned in the list.

Parameters:
extension - the extension to search for.
importFolders - an array of list of root folders.
Returns:
a list of leaf folder, never null.

convertByteCode

public void convertByteCode(@NonNull
                            java.lang.Iterable<java.io.File> inputs,
                            @NonNull
                            java.lang.Iterable<java.io.File> preDexedLibraries,
                            @NonNull
                            java.io.File outDexFolder,
                            @NonNull
                            DexOptions dexOptions,
                            @Nullable
                            java.util.List<java.lang.String> additionalParameters,
                            boolean incremental)
                     throws java.io.IOException,
                            java.lang.InterruptedException,
                            com.android.ide.common.internal.LoggedErrorException
Converts the bytecode to Dalvik format

Parameters:
inputs - the input files
preDexedLibraries - the list of pre-dexed libraries
outDexFolder - the location of the output folder
dexOptions - dex options
additionalParameters -
incremental - true if it should attempt incremental dex if applicable
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

preDexLibrary

public void preDexLibrary(@NonNull
                          java.io.File inputFile,
                          @NonNull
                          java.io.File outFile,
                          @NonNull
                          DexOptions dexOptions)
                   throws java.io.IOException,
                          java.lang.InterruptedException,
                          com.android.ide.common.internal.LoggedErrorException
Converts the bytecode to Dalvik format

Parameters:
inputFile - the input file
outFile - the location of the output classes.dex file
dexOptions - dex options
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

preDexLibrary

public static void preDexLibrary(@NonNull
                                 java.io.File inputFile,
                                 @NonNull
                                 java.io.File outFile,
                                 @NonNull
                                 DexOptions dexOptions,
                                 @NonNull
                                 com.android.sdklib.BuildToolInfo buildToolInfo,
                                 boolean verbose,
                                 @NonNull
                                 com.android.ide.common.internal.CommandLineRunner commandLineRunner)
                          throws java.io.IOException,
                                 java.lang.InterruptedException,
                                 com.android.ide.common.internal.LoggedErrorException
Throws:
java.io.IOException
java.lang.InterruptedException
com.android.ide.common.internal.LoggedErrorException

packageApk

public void packageApk(@NonNull
                       java.lang.String androidResPkgLocation,
                       @NonNull
                       java.io.File dexFolder,
                       @NonNull
                       java.util.Collection<java.io.File> packagedJars,
                       @Nullable
                       java.lang.String javaResourcesLocation,
                       @Nullable
                       java.util.Collection<java.io.File> jniLibsFolders,
                       @Nullable
                       java.util.Set<java.lang.String> abiFilters,
                       boolean jniDebugBuild,
                       @Nullable
                       com.android.builder.model.SigningConfig signingConfig,
                       @Nullable
                       com.android.builder.model.PackagingOptions packagingOptions,
                       @NonNull
                       java.lang.String outApkLocation)
                throws DuplicateFileException,
                       java.io.FileNotFoundException,
                       com.android.ide.common.signing.KeytoolException,
                       PackagerException,
                       SigningException
Packages the apk.

Parameters:
androidResPkgLocation - the location of the packaged resource file
dexFolder - the folder with the dex file.
packagedJars - the jars that are packaged (libraries + jar dependencies)
javaResourcesLocation - the processed Java resource folder
jniLibsFolders - the folders containing jni shared libraries
abiFilters - optional ABI filter
jniDebugBuild - whether the app should include jni debug data
signingConfig - the signing configuration
packagingOptions - the packaging options
outApkLocation - location of the APK.
Throws:
DuplicateFileException
java.io.FileNotFoundException - if the store location was not found
com.android.ide.common.signing.KeytoolException
PackagerException
SigningException - when the key cannot be read from the keystore
See Also:
VariantConfiguration.getPackagedJars()