public class AndroidBuilder
extends java.lang.Object
DefaultProductFlavors, DefaultBuildType and dependencies) and use them when doing
specific build steps.
To use: create a builder with #AndroidBuilder(ProcessExecutor, JavaProcessExecutor,
EvalIssueReporter, MessageReceiver, ILogger)
then build steps can be done with:
mergeManifestsForApplication(java.io.File, java.util.List<java.io.File>, java.util.List<? extends com.android.manifmerger.ManifestProvider>, java.util.List<java.io.File>, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, com.android.manifmerger.ManifestMerger2.MergeType, java.util.Map<java.lang.String, java.lang.Object>, java.util.Collection<com.android.manifmerger.ManifestMerger2.Invoker.Feature>, java.io.File, com.android.utils.ILogger)
mergeManifestsForTestVariant(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Boolean, java.lang.Boolean, java.lang.String, java.io.File, java.util.List<? extends com.android.manifmerger.ManifestProvider>, java.util.Map<java.lang.String, java.lang.Object>, java.io.File, java.io.File)
processResources(com.android.builder.internal.aapt.v2.Aapt2, com.android.builder.internal.aapt.AaptPackageConfig, com.android.utils.ILogger)
| Modifier and Type | Field and Description |
|---|---|
static com.android.repository.Revision |
DEFAULT_BUILD_TOOLS_REVISION
Default version of build tools that will be used if the user does not specify.
|
static com.android.repository.Revision |
MIN_BUILD_TOOLS_REV
Minimal supported version of build tools.
|
| Constructor and Description |
|---|
AndroidBuilder(java.lang.String createdBy,
com.android.ide.common.process.ProcessExecutor processExecutor,
com.android.ide.common.process.JavaProcessExecutor javaProcessExecutor,
com.android.builder.errors.EvalIssueReporter issueReporter,
com.android.ide.common.blame.MessageReceiver messageReceiver,
com.android.utils.ILogger logger)
Creates an AndroidBuilder.
|
| Modifier and Type | Method and Description |
|---|---|
void |
compileAllRenderscriptFiles(java.util.Collection<java.io.File> sourceFolders,
java.util.Collection<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,
boolean useAndroidX,
java.util.Set<java.lang.String> abiFilters,
com.android.ide.common.process.ProcessOutputHandler processOutputHandler,
com.android.sdklib.BuildToolInfo buildToolInfo)
Compiles all the renderscript files found in the given source folders.
|
void |
compileAllShaderFiles(java.io.File sourceFolder,
java.io.File outputDir,
java.util.List<java.lang.String> defaultArgs,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> scopedArgs,
java.io.File nkdLocation,
com.android.ide.common.process.ProcessOutputHandler processOutputHandler,
com.android.ide.common.workers.WorkerExecutorFacade workers)
Compiles all the shader files found in the given source folders.
|
com.android.ide.common.process.ProcessResult |
executeProcess(com.android.ide.common.process.ProcessInfo processInfo,
com.android.ide.common.process.ProcessOutputHandler handler) |
void |
generateApkData(java.io.File apkFile,
java.io.File outResFolder,
java.lang.String mainPkgName,
java.lang.String resName,
com.android.sdklib.BuildToolInfo buildToolInfo) |
static void |
generateApkDataEntryInManifest(int minSdkVersion,
int targetSdkVersion,
java.io.File manifestFile) |
void |
generateUnbundledWearApkData(java.io.File outResFolder,
java.lang.String mainPkgName) |
java.lang.String |
getCreatedBy()
Obtains the "created by" tag for the packaged manifest.
|
com.android.builder.errors.EvalIssueReporter |
getIssueReporter() |
com.android.ide.common.process.JavaProcessExecutor |
getJavaProcessExecutor() |
com.android.utils.ILogger |
getLogger() |
com.android.ide.common.blame.MessageReceiver |
getMessageReceiver() |
com.android.ide.common.process.ProcessExecutor |
getProcessExecutor() |
static com.android.manifmerger.MergingReport |
mergeManifestsForApplication(java.io.File mainManifest,
java.util.List<java.io.File> manifestOverlays,
java.util.List<? extends com.android.manifmerger.ManifestProvider> dependencies,
java.util.List<java.io.File> navigationFiles,
java.lang.String featureName,
java.lang.String packageOverride,
int versionCode,
java.lang.String versionName,
java.lang.String minSdkVersion,
java.lang.String targetSdkVersion,
java.lang.Integer maxSdkVersion,
java.lang.String outManifestLocation,
java.lang.String outAaptSafeManifestLocation,
java.lang.String outInstantRunManifestLocation,
java.lang.String outMetadataFeatureManifestLocation,
java.lang.String outBundleManifestLocation,
java.lang.String outInstantAppManifestLocation,
com.android.manifmerger.ManifestMerger2.MergeType mergeType,
java.util.Map<java.lang.String,java.lang.Object> placeHolders,
java.util.Collection<com.android.manifmerger.ManifestMerger2.Invoker.Feature> optionalFeatures,
java.io.File reportFile,
com.android.utils.ILogger logger)
Invoke the Manifest Merger version 2.
|
void |
mergeManifestsForTestVariant(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.lang.String testLabel,
java.io.File testManifestFile,
java.util.List<? extends com.android.manifmerger.ManifestProvider> manifestProviders,
java.util.Map<java.lang.String,java.lang.Object> manifestPlaceholders,
java.io.File outManifest,
java.io.File tmpDir)
Creates the manifest for a test variant
|
static void |
processResources(com.android.builder.internal.aapt.v2.Aapt2 aapt,
com.android.builder.internal.aapt.AaptPackageConfig aaptConfig,
com.android.utils.ILogger logger) |
public static final com.android.repository.Revision MIN_BUILD_TOOLS_REV
ATTENTION: When changing this value, make sure to update the release notes (https://developer.android.com/studio/releases/gradle-plugin).
public static final com.android.repository.Revision DEFAULT_BUILD_TOOLS_REVISION
ATTENTION: This is usually the same as the minimum build tools version, as documented in
com.android.build.gradle.AndroidConfig#getBuildToolsVersion() and com.android.build.api.dsl.extension.BuildProperties#getBuildToolsVersion(), and in the
release notes (https://developer.android.com/studio/releases/gradle-plugin). If this version
is higher than the minimum version, make sure to update those places to document the new
behavior.
public AndroidBuilder(@Nullable
java.lang.String createdBy,
@NonNull
com.android.ide.common.process.ProcessExecutor processExecutor,
@NonNull
com.android.ide.common.process.JavaProcessExecutor javaProcessExecutor,
@NonNull
com.android.builder.errors.EvalIssueReporter issueReporter,
@NonNull
com.android.ide.common.blame.MessageReceiver messageReceiver,
@NonNull
com.android.utils.ILogger logger)
verboseExec is needed on top of the ILogger due to remote exec tools not being able to output info and verbose messages separately.
createdBy - the createdBy String for the apk manifest.logger - the Logger@NonNull public com.android.utils.ILogger getLogger()
@NonNull public com.android.builder.errors.EvalIssueReporter getIssueReporter()
@NonNull public com.android.ide.common.blame.MessageReceiver getMessageReceiver()
@NonNull public com.android.ide.common.process.ProcessExecutor getProcessExecutor()
@NonNull public com.android.ide.common.process.JavaProcessExecutor getJavaProcessExecutor()
@NonNull
public com.android.ide.common.process.ProcessResult executeProcess(@NonNull
com.android.ide.common.process.ProcessInfo processInfo,
@NonNull
com.android.ide.common.process.ProcessOutputHandler handler)
public static com.android.manifmerger.MergingReport mergeManifestsForApplication(@NonNull
java.io.File mainManifest,
@NonNull
java.util.List<java.io.File> manifestOverlays,
@NonNull
java.util.List<? extends com.android.manifmerger.ManifestProvider> dependencies,
@NonNull
java.util.List<java.io.File> navigationFiles,
@Nullable
java.lang.String featureName,
java.lang.String packageOverride,
int versionCode,
java.lang.String versionName,
@Nullable
java.lang.String minSdkVersion,
@Nullable
java.lang.String targetSdkVersion,
@Nullable
java.lang.Integer maxSdkVersion,
@NonNull
java.lang.String outManifestLocation,
@Nullable
java.lang.String outAaptSafeManifestLocation,
@Nullable
java.lang.String outInstantRunManifestLocation,
@Nullable
java.lang.String outMetadataFeatureManifestLocation,
@Nullable
java.lang.String outBundleManifestLocation,
@Nullable
java.lang.String outInstantAppManifestLocation,
com.android.manifmerger.ManifestMerger2.MergeType mergeType,
java.util.Map<java.lang.String,java.lang.Object> placeHolders,
@NonNull
java.util.Collection<com.android.manifmerger.ManifestMerger2.Invoker.Feature> optionalFeatures,
@Nullable
java.io.File reportFile,
@NonNull
com.android.utils.ILogger logger)
public void mergeManifestsForTestVariant(@NonNull
java.lang.String testApplicationId,
@NonNull
java.lang.String minSdkVersion,
@NonNull
java.lang.String targetSdkVersion,
@NonNull
java.lang.String testedApplicationId,
@NonNull
java.lang.String instrumentationRunner,
@NonNull
java.lang.Boolean handleProfiling,
@NonNull
java.lang.Boolean functionalTest,
@Nullable
java.lang.String testLabel,
@Nullable
java.io.File testManifestFile,
@NonNull
java.util.List<? extends com.android.manifmerger.ManifestProvider> manifestProviders,
@NonNull
java.util.Map<java.lang.String,java.lang.Object> manifestPlaceholders,
@NonNull
java.io.File outManifest,
@NonNull
java.io.File tmpDir)
testApplicationId - the application id of the test applicationminSdkVersion - the minSdkVersion of the test applicationtargetSdkVersion - the targetSdkVersion of the test applicationtestedApplicationId - the application id of the tested applicationinstrumentationRunner - the name of the instrumentation runnerhandleProfiling - whether or not the Instrumentation object will turn profiling on and offfunctionalTest - whether or not the Instrumentation class should run as a functional testtestLabel - the label for the teststestManifestFile - optionally user provided AndroidManifest.xml for testing applicationmanifestProviders - the manifest providersmanifestPlaceholders - used placeholders in the manifestoutManifest - the output location for the merged manifesttmpDir - temporary dir used for processingpublic static void processResources(@NonNull
com.android.builder.internal.aapt.v2.Aapt2 aapt,
@NonNull
com.android.builder.internal.aapt.AaptPackageConfig aaptConfig,
@NonNull
com.android.utils.ILogger logger)
throws java.io.IOException,
com.android.ide.common.process.ProcessException
java.io.IOExceptioncom.android.ide.common.process.ProcessExceptionpublic void generateApkData(@NonNull
java.io.File apkFile,
@NonNull
java.io.File outResFolder,
@NonNull
java.lang.String mainPkgName,
@NonNull
java.lang.String resName,
@NonNull
com.android.sdklib.BuildToolInfo buildToolInfo)
throws com.android.ide.common.process.ProcessException,
java.io.IOException
com.android.ide.common.process.ProcessExceptionjava.io.IOExceptionpublic void generateUnbundledWearApkData(@NonNull
java.io.File outResFolder,
@NonNull
java.lang.String mainPkgName)
throws java.io.IOException
java.io.IOExceptionpublic static void generateApkDataEntryInManifest(int minSdkVersion,
int targetSdkVersion,
@NonNull
java.io.File manifestFile)
throws java.io.IOException
java.io.IOExceptionpublic void compileAllShaderFiles(@NonNull
java.io.File sourceFolder,
@NonNull
java.io.File outputDir,
@NonNull
java.util.List<java.lang.String> defaultArgs,
@NonNull
java.util.Map<java.lang.String,java.util.List<java.lang.String>> scopedArgs,
@Nullable
java.io.File nkdLocation,
@NonNull
com.android.ide.common.process.ProcessOutputHandler processOutputHandler,
@NonNull
com.android.ide.common.workers.WorkerExecutorFacade workers)
throws java.io.IOException
sourceFolder - the source folder with the merged shadersoutputDir - the output dir in which to generate the outputjava.io.IOException - failedpublic void compileAllRenderscriptFiles(@NonNull
java.util.Collection<java.io.File> sourceFolders,
@NonNull
java.util.Collection<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,
boolean useAndroidX,
@Nullable
java.util.Set<java.lang.String> abiFilters,
@NonNull
com.android.ide.common.process.ProcessOutputHandler processOutputHandler,
@NonNull
com.android.sdklib.BuildToolInfo buildToolInfo)
throws java.lang.InterruptedException,
com.android.ide.common.process.ProcessException,
java.io.IOException
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.
sourceFolders - all the source folders to find files to compileimportFolders - all the import folders.sourceOutputDir - the output dir in which to generate the source coderesOutputDir - the output dir in which to generate the bitcode filetargetApi - the target apidebugBuild - whether the build is debugoptimLevel - the optimization levelndkMode - whether the renderscript code should be compiled to generate C/C++ bindingssupportMode - support mode flag to generate .so files.useAndroidX - whether to use AndroidX dependenciesabiFilters - ABI filters in case of support modejava.io.IOException - failedjava.lang.InterruptedException - failedcom.android.ide.common.process.ProcessException@Nullable public java.lang.String getCreatedBy()
null if no tag was defined