String testedPackage = mTestedConfig.getApplicationId(); if (id == null) { id = testedPackage + ".test"; throw new RuntimeException(String.format("Application and test application id " + "cannot be the same: both are '%s' for %s", id, getFullName())); id = getIdOverride(); id = getPackageFromManifest(); throw new RuntimeException("Failed to get application id for " + getFullName());
@NonNull @Override public String getFlavorName() { return testVariantConfig.getFlavorName().toUpperCase(Locale.getDefault()); } }
public Collection<File> getJarJarRuleFiles() { ImmutableList.Builder<File> jarjarRuleFiles = ImmutableList.builder(); jarjarRuleFiles.addAll(getMergedFlavor().getJarJarRuleFiles()); jarjarRuleFiles.addAll(mBuildType.getJarJarRuleFiles()); return jarjarRuleFiles.build(); } }
/** * Returns the full, unique name of the variant in camel case (starting with a lower case), * including BuildType, Flavors and Test (if applicable). * * @return the name of the variant */ @NonNull public String getFullName() { if (mFullName == null) { mFullName = computeFullName(getFlavorName(), mBuildType, mType); } return mFullName; }
public boolean isLegacyMultiDexMode() { return isMultiDexEnabled() && getMinSdkVersion().getApiLevel() < 21; }
/** * Return the minSdkVersion for this variant. * * <p>This uses both the value from the manifest (if present), and the override coming from the * flavor(s) (if present). The value of the minSdkVersion will be combined with the value of the * targetSdkVersion. For the details of the overlaying logic check {@link * #getCalculatedApiVersions(ApiVersion, ApiVersion)} method. * * @return the minSdkVersion */ @NonNull public ApiVersion getMinSdkVersion() { if (mTestedConfig != null) { return mTestedConfig.getMinSdkVersion(); } return getApiVersionsNonTestVariant().minSdkVersion; }
packageSplitAbiTask.setInputFiles(this.scope.getSplitAbiResOutputFiles()); packageSplitAbiTask.setSplits(filters); packageSplitAbiTask.setOutputBaseName(config.getBaseName()); packageSplitAbiTask.setSigningConfig(config.getSigningConfig()); packageSplitAbiTask.setOutputDirectory(this.scope.getSplitOutputDirectory()); packageSplitAbiTask.setAndroidBuilder(this.scope.getGlobalScope().getAndroidBuilder()); packageSplitAbiTask.setVariantName(config.getFullName()); packageSplitAbiTask.setMinSdkVersion(config.getMinSdkVersion()); packageSplitAbiTask.incrementalDir = this.scope.getIncrementalDir( packageSplitAbiTask.getName()); packageSplitAbiTask, "jniDebuggable", () -> config.getBuildType().isJniDebuggable());
scope.getGlobalScope().getIntermediatesDir(), "abi/" + config.getDirName())); generateSplitAbiRes.setSplits(filters); generateSplitAbiRes.setOutputBaseName(config.getBaseName()); generateSplitAbiRes.setApplicationId(config.getApplicationId()); generateSplitAbiRes.setVersionCode(config.getVersionCode()); generateSplitAbiRes.setVersionName(config.getVersionName()); ConventionMappingHelper.map(generateSplitAbiRes, "debuggable", new Callable<Boolean>() { @Override variantOutputData.packageSplitAbiTask.setInputFiles(generateSplitAbiRes.getOutputFiles()); variantOutputData.packageSplitAbiTask.setSplits(filters); variantOutputData.packageSplitAbiTask.setOutputBaseName(config.getBaseName()); variantOutputData.packageSplitAbiTask.setSigningConfig(config.getSigningConfig()); variantOutputData.packageSplitAbiTask.setOutputDirectory(new File( scope.getGlobalScope().getIntermediatesDir(), "splits/" + config.getDirName()));
shaderSet = new AssetSet(getFlavorName()); shaderSet.addSources(variantJniDirs); shaderSets.add(shaderSet); shaderSet = new AssetSet(getFullName()); shaderSet.addSources(variantJniDirs); shaderSets.add(shaderSet);
for (AndroidDependency dependency : getPackageDependencies().getAllAndroidDependencies().reverse()) { File assetFolder = dependency.getAssetsFolder(); if (assetFolder.isDirectory()) { assetSet = new AssetSet(getFlavorName()); assetSet.addSources(variantResDirs); assetSets.add(assetSet); assetSet = new AssetSet(getFullName()); assetSet.addSources(variantResDirs); assetSets.add(assetSet);
variantOutputData.packageSplitResourcesTask.setDensitySplits(densityFilters); variantOutputData.packageSplitResourcesTask.setLanguageSplits(languageFilters); variantOutputData.packageSplitResourcesTask.setOutputBaseName(config.getBaseName()); variantOutputData.packageSplitResourcesTask.setSigningConfig(config.getSigningConfig()); variantOutputData.packageSplitResourcesTask.setOutputDirectory(new File( scope.getGlobalScope().getIntermediatesDir(), "splits/" + config.getDirName())); variantOutputData.packageSplitResourcesTask.setAndroidBuilder(androidBuilder); variantOutputData.packageSplitResourcesTask.dependsOn( zipAlign.setOutputBaseName(config.getBaseName()); zipAlign.setAbiFilters(abiFilters); zipAlign.setLanguageFilters(languageFilters); File metadataDirectory = new File(zipAlign.getOutputDirectory().getParentFile(), "metadata"); zipAlign.setApkMetadataFile(new File(metadataDirectory, config.getFullName() + ".mtd")); ((ApkVariantOutputData) variantOutputData).splitZipAlign = zipAlign; zipAlign.dependsOn(variantOutputData.packageSplitResourcesTask);
@Override public void execute(@NonNull PackageSplitRes packageSplitResourcesTask) { BaseVariantData<? extends BaseVariantOutputData> variantData = scope.getVariantData(); final VariantConfiguration config = variantData.getVariantConfiguration(); Set<String> densityFilters = variantData.getFilters(OutputFile.FilterType.DENSITY); Set<String> languageFilters = variantData.getFilters(OutputFile.FilterType.LANGUAGE); final BaseVariantOutputData variantOutputData = variantData.getMainOutput(); variantOutputData.packageSplitResourcesTask = packageSplitResourcesTask; VariantOutputScope variantOutputScope = variantOutputData.getScope(); packageSplitResourcesTask.setInputDirectory( variantOutputScope.getProcessResourcePackageOutputFile().getParentFile()); packageSplitResourcesTask.setDensitySplits(densityFilters); packageSplitResourcesTask.setLanguageSplits(languageFilters); packageSplitResourcesTask.setOutputBaseName(config.getBaseName()); packageSplitResourcesTask.setSigningConfig(config.getSigningConfig()); packageSplitResourcesTask.setOutputDirectory(scope.getSplitOutputDirectory()); packageSplitResourcesTask.setAndroidBuilder(scope.getGlobalScope().getAndroidBuilder()); packageSplitResourcesTask.setVariantName(config.getFullName()); packageSplitResourcesTask.dependsOn( variantOutputScope.getProcessResourcesTask().getName()); } }
@Override public void execute(@NonNull GenerateSplitAbiRes generateSplitAbiRes) { final VariantConfiguration config = scope.getVariantConfiguration(); Set<String> filters = AbiSplitOptions.getAbiFilters( scope.getGlobalScope().getExtension().getSplits().getAbiFilters()); generateSplitAbiRes.setAndroidBuilder(scope.getGlobalScope().getAndroidBuilder()); generateSplitAbiRes.setVariantName(config.getFullName()); generateSplitAbiRes.setOutputDirectory(scope.getGenerateSplitAbiResOutputDirectory()); generateSplitAbiRes.setSplits(filters); generateSplitAbiRes.setOutputBaseName(config.getBaseName()); generateSplitAbiRes.setApplicationId(config.getApplicationId()); generateSplitAbiRes.variantOutputData = (ApkVariantOutputData) scope.getVariantData().getMainOutput(); ConventionMappingHelper.map(generateSplitAbiRes, "debuggable", new Callable<Boolean>() { @Override public Boolean call() throws Exception { return config.getBuildType().isDebuggable(); } }); ConventionMappingHelper.map(generateSplitAbiRes, "aaptOptions", new Callable<AaptOptions>() { @Override public AaptOptions call() throws Exception { return scope.getGlobalScope().getExtension().getAaptOptions(); } }); } }
/** * Returns the original application ID before any overrides from flavors. * If the variant is a test variant, then the application ID is the one coming from the * configuration of the tested variant, and this call is similar to {@link #getApplicationId()} * @return the original application ID */ @Nullable public String getOriginalApplicationId() { if (mType.isForTesting()) { return getApplicationId(); } return getPackageFromManifest(); }
public int getRenderscriptTarget() { ProductFlavor mergedFlavor = getMergedFlavor(); int targetApi = mergedFlavor.getRenderscriptTargetApi() != null ? mergedFlavor.getRenderscriptTargetApi() : -1; ApiVersion apiVersion = getMinSdkVersion(); int minSdk = apiVersion.getApiLevel(); if (apiVersion.getCodename() != null) { minSdk = SdkVersionInfo.getApiByBuildCode(apiVersion.getCodename(), true); } return targetApi > minSdk ? targetApi : minSdk; }
String variantName = variantConfig.getFullName(); for (final DeviceConnector device : devices) { if (InstallUtils.checkDeviceApiLevel( device, variantConfig.getMinSdkVersion(), iLogger, projectName, variantName)) {
@NonNull public Set<File> getJniFolders() { assert getNdkSoFolder() != null; VariantConfiguration config = getVariantConfiguration(); ApkVariantData apkVariantData = (ApkVariantData) variantData; // for now only the project's compilation output. Set<File> set = Sets.newHashSet(); set.addAll(getNdkSoFolder()); set.add(getRenderscriptLibOutputDir()); set.addAll(config.getLibraryJniFolders()); set.addAll(config.getJniLibsList()); if (config.getMergedFlavor().getRenderscriptSupportModeEnabled() != null && config.getMergedFlavor().getRenderscriptSupportModeEnabled()) { File rsLibs = globalScope.getAndroidBuilder().getSupportNativeLibFolder(); if (rsLibs != null && rsLibs.isDirectory()) { set.add(rsLibs); } } return set; }
processManifest.setVariantName(config.getFullName()); final ProductFlavor mergedFlavor = config.getMergedFlavor();
@Nullable public String getTestedApplicationId() { if (mType.isForTesting()) { checkState(mTestedConfig != null); if (mTestedConfig.mType == VariantType.LIBRARY) { return getApplicationId(); } else { return mTestedConfig.getApplicationId(); } } return null; }
@NonNull @Override public ApiVersion getMinSdkVersion() { return testVariantConfig.getMinSdkVersion(); }