public FilterType getFilterType(String filter) { String languageName = PackageSplitRes.unMangleSplitName(filter); if (languageFilters.contains(languageName)) { return FilterType.LANGUAGE; } if (abiFilters.contains(filter)) { return FilterType.ABI; } return FilterType.DENSITY; }
/** * Returns true if the passed string is one of the filter we must process potentially followed * by a prefix (some density filters get V4, V16, etc... appended). */ public boolean isFilter(String potentialFilterWithSuffix) { for (String density : densityFilters) { if (potentialFilterWithSuffix.startsWith(density)) { return true; } } return abiFilters.contains(potentialFilterWithSuffix) || languageFilters.contains( PackageSplitRes.unMangleSplitName(potentialFilterWithSuffix)); }
public String getFilter(String filterWithPossibleSuffix) { FilterType type = getFilterType(filterWithPossibleSuffix); if (type == FilterType.DENSITY) { for (String density : densityFilters) { if (filterWithPossibleSuffix.startsWith(density)) { return density; } } } if (type == FilterType.LANGUAGE) { return PackageSplitRes.unMangleSplitName(filterWithPossibleSuffix); } return filterWithPossibleSuffix; }
/** * Returns true if the passed split identifier is a valid identifier (valid mean it is a * requested split for this task). A density split identifier can be suffixed with characters * added by aapt. */ private static boolean isValidSplit( List<String> densities, List<String> languages, @NonNull String splitWithOptionalSuffix) { for (String density : densities) { if (splitWithOptionalSuffix.startsWith(density)) { densities.remove(density); return true; } } String mangledName = unMangleSplitName(splitWithOptionalSuffix); if (languages.contains(mangledName)) { languages.remove(mangledName); return true; } return false; }
@Override public void execute(String split, File file) { // find the split identification, if null, the split is not requested any longer. FilterData filterData = null; for (String density : densitySplits) { if (split.startsWith(density)) { filterData = FilterDataImpl.build( OutputFile.FilterType.DENSITY.toString(), density); } } if (languageSplits.contains(unMangleSplitName(split))) { filterData = FilterDataImpl.build( OutputFile.FilterType.LANGUAGE.toString(), unMangleSplitName(split)); } if (filterData != null) { builder.add(new ApkOutputFile( OutputFile.OutputType.SPLIT, ImmutableList.of(filterData), Callables.returning( new File(outputDirectory, getOutputFileNameForSplit(split))))); } } });