LanguageTargeting.newBuilder().addValue(language)) .build()) .setMasterSplit(split.isMasterSplit() && language.isEmpty())
/** Moves targeting values to the alternatives. */ public static AssetsDirectoryTargeting toAlternativeTargeting( AssetsDirectoryTargeting targeting) { AssetsDirectoryTargeting.Builder alternativeTargeting = AssetsDirectoryTargeting.newBuilder(); if (targeting.hasTextureCompressionFormat()) { alternativeTargeting .getTextureCompressionFormatBuilder() .addAllAlternatives(targeting.getTextureCompressionFormat().getValueList()); } if (targeting.hasGraphicsApi()) { alternativeTargeting .getGraphicsApiBuilder() .addAllAlternatives(targeting.getGraphicsApi().getValueList()); } if (targeting.hasAbi()) { alternativeTargeting.getAbiBuilder().addAllAlternatives(targeting.getAbi().getValueList()); } if (targeting.hasLanguage()) { alternativeTargeting .getLanguageBuilder() .addAllAlternatives(targeting.getLanguage().getValueList()); } return alternativeTargeting.build(); }
private static AssetsDirectoryTargeting parseLanguage(String name, String value) { Matcher matcher = LANGUAGE_CODE_PATTERN.matcher(value); if (!matcher.matches()) { throw ValidationException.builder() .withMessage( "Expected 2- or 3-character language directory but got '%s' for directory '%s'.", value, name) .build(); } return AssetsDirectoryTargeting.newBuilder() .setLanguage(LanguageTargeting.newBuilder().addValue(value.toLowerCase())) .build(); } }
/** * Deliberately private, because bundletool should never produce language targeting with both * `values` and `alternatives`. */ private static LanguageTargeting languageTargeting( ImmutableSet<String> languages, ImmutableSet<String> alternativeLanguages) { return LanguageTargeting.newBuilder() .addAllValue(languages) .addAllAlternatives(alternativeLanguages) .build(); }