public static String[] getAdditionalPlugins(Project project) { String string = getString(project, ANDROID_ADDITIONAL_PLUGINS); return string == null ? new String[]{} : string.split(","); }
public static boolean buildModelWithFullDependencies(@NonNull Project project) { String value = getString(project, AndroidProject.PROPERTY_BUILD_MODEL_FEATURE_FULL_DEPENDENCIES); if (value == null) { return false; } return Boolean.valueOf(value); }
@NonNull public static EnumSet<OptionalCompilationStep> getOptionalCompilationSteps( @NonNull Project project) { String values = getString(project, AndroidProject.PROPERTY_OPTIONAL_COMPILATION_STEPS); if (values != null) { List<OptionalCompilationStep> optionalCompilationSteps = new ArrayList<>(); StringTokenizer st = new StringTokenizer(values, ","); while(st.hasMoreElements()) { optionalCompilationSteps.add(OptionalCompilationStep.valueOf(st.nextToken())); } return EnumSet.copyOf(optionalCompilationSteps); } return EnumSet.noneOf(OptionalCompilationStep.class); }
@Nullable public static SigningOptions getSigningOptions(@NonNull Project project) { String signingStoreFile = getString(project, AndroidProject.PROPERTY_SIGNING_STORE_FILE); String signingStorePassword = getString(project, AndroidProject.PROPERTY_SIGNING_STORE_PASSWORD); String signingKeyAlias = getString(project, AndroidProject.PROPERTY_SIGNING_KEY_ALIAS); String signingKeyPassword = getString(project, AndroidProject.PROPERTY_SIGNING_KEY_PASSWORD); if (signingStoreFile != null && signingStorePassword != null && signingKeyAlias != null && signingKeyPassword != null) { String signingStoreType = getString(project, AndroidProject.PROPERTY_SIGNING_STORE_TYPE); return new SigningOptions( signingStoreFile, signingStorePassword, signingKeyAlias, signingKeyPassword, signingStoreType, getOptionalBoolean(project, AndroidProject.PROPERTY_SIGNING_V1_ENABLED), getOptionalBoolean(project, AndroidProject.PROPERTY_SIGNING_V2_ENABLED)); } return null; }
@Nullable public static String getBuildTargetDensity(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_BUILD_DENSITY); }
@Nullable public static String getRestrictVariantProject(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_RESTRICT_VARIANT_PROJECT); }
@Nullable public static String getRestrictVariantName(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_RESTRICT_VARIANT_NAME); }
@Nullable public static String getBuildTargetAbi(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_BUILD_ABI); }
@Nullable public static String getColdswapMode(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_SIGNING_COLDSWAP_MODE); }
@Nullable public static String getVersionNameOverride(@NonNull Project project) { return getString(project, AndroidProject.PROPERTY_VERSION_NAME); }
@NonNull public static InstantRunApiLevelMode getInstantRunApiLevelMode(@NonNull Project project) { String valueName = getString(project, INSTANT_RUN_API_LEVEL_PROPERTY); if (valueName != null) { try { return InstantRunApiLevelMode.valueOf(valueName); } catch (IllegalArgumentException ignored) { // Return the default value below. } } return InstantRunApiLevelMode.COMPILE_SDK; }
/** * Obtains the location for APKs as defined in the project. * * @param project the project * @return the location for APKs or {@code null} if not defined */ @Nullable public static File getApkLocation(@NonNull Project project) { String locString = getString(project, AndroidProject.PROPERTY_APK_LOCATION); if (locString == null) { return null; } return project.file(locString); }
@NonNull public static File getBuildCacheDir(@NonNull Project project) { String buildCacheDir = getString(project, PROPERTY_BUILD_CACHE_DIR); if (buildCacheDir != null) { return project.getRootProject().file(buildCacheDir); } else { // Use a directory under the ".android" directory if the build cache directory is not // set try { return new File(AndroidLocation.getFolder(), "build-cache"); } catch (AndroidLocation.AndroidLocationException e) { throw new RuntimeException(e); } } }
/** * Returns the level of model-only mode. * * The model-only mode is triggered when the IDE does a sync, and therefore we do * things a bit differently (don't throw exceptions for instance). Things evolved a bit * over versions and the behavior changes. This reflects the mode to use. * * @param project the project * @return an integer or null if we are not in model-only mode. * * @see AndroidProject#MODEL_LEVEL_0_ORIGINAL * @see AndroidProject#MODEL_LEVEL_1_SYNC_ISSUE * @see AndroidProject#MODEL_LEVEL_2_DONT_USE */ @Nullable public static Integer buildModelOnlyVersion(@NonNull Project project) { String revision = getString(project, AndroidProject.PROPERTY_BUILD_MODEL_ONLY_VERSIONED); if (revision != null) { return Integer.parseInt(revision); } if (getBoolean(project, AndroidProject.PROPERTY_BUILD_MODEL_ONLY_ADVANCED)) { return AndroidProject.MODEL_LEVEL_1_SYNC_ISSUE; } if (getBoolean(project, AndroidProject.PROPERTY_BUILD_MODEL_ONLY)) { return AndroidProject.MODEL_LEVEL_0_ORIGINAL; } return null; }
/** * Returns the feature level for the target device. * * For preview versions that is the last stable version + 1. * * @param project the project being built * @return a the feature level for the targeted device, following the * {@link AndroidProject#PROPERTY_BUILD_API} value passed by Android Studio. */ public static int getTargetFeatureLevel(@NonNull Project project) { String featureLevelString = getString(project, AndroidProject.PROPERTY_BUILD_API); if (featureLevelString == null) { return AndroidVersion.DEFAULT.getFeatureLevel(); } try { return Integer.parseInt(featureLevelString); } catch (NumberFormatException ignore) { project.getLogger().warn("Wrong build target version passed ", ignore); return AndroidVersion.DEFAULT.getFeatureLevel(); } }