private ConfigurationSizes getSizeStandaloneVariant() { checkState( !getSizeRequest.getInstant(), "Standalone Variants cant be selected when instant flag is set"); // When modules are specified we ignore standalone variants. if (getSizeRequest.getModules().isPresent()) { return ConfigurationSizes.create(ImmutableMap.of(), ImmutableMap.of()); } VariantTargeting variantTargeting = variant.getTargeting(); SizeConfiguration sizeConfiguration = mergeWithDeviceSpec( getSizeConfiguration( variantTargeting.getSdkVersionTargeting(), variantTargeting.getAbiTargeting(), variantTargeting.getScreenDensityTargeting(), LanguageTargeting.getDefaultInstance()), getSizeRequest.getDeviceSpec()); // Variants of standalone APKs have only one APK each. long compressedSize = sizeByApkPaths.get( Iterables.getOnlyElement( Iterables.getOnlyElement(variant.getApkSetList()).getApkDescriptionList()) .getPath()); ImmutableMap<SizeConfiguration, Long> sizeConfigurationMap = ImmutableMap.of(sizeConfiguration, compressedSize); return ConfigurationSizes.create(sizeConfigurationMap, sizeConfigurationMap); }
for (VariantKey variantKey : finalSplitsByVariant.keySet()) { Variant.Builder variant = Variant.newBuilder() .setVariantNumber(variantNumberByVariantKey.get(variantKey)) .setTargeting(variantKey.getVariantTargeting());
List<ApkSet> standaloneApkSets = standaloneApkVariants(result).get(0).getApkSetList(); assertThat(standaloneApkSets).hasSize(1); List<ApkDescription> standaloneApkDescription = List<ApkSet> splitApkSetList = splitApkVariants(result).get(0).getApkSetList(); Map<String, ApkSet> modules = Maps.uniqueIndex(splitApkSetList, apkSet -> apkSet.getModuleMetadata().getName());
assertThat(splitApkVariants).hasSize(1); ImmutableMap<String, List<ApkDescription>> splitApksByModule = splitApkVariants.get(0).getApkSetList().stream() .collect( toImmutableMap(
variantMultiAbiTargetingFromAllTargeting(arm7Set, allTargeting)); for (Variant variant : standaloneVariantsByAbi.values()) { ApkSet apkSet = getOnlyElement(variant.getApkSetList()); ApkDescription apkDescription = getOnlyElement(apkSet.getApkDescriptionList()); assertThat(apkSetFile).hasFile(apkDescription.getPath());
assertThat(systemVariant.getTargeting()).isEqualTo(UNRESTRICTED_VARIANT_TARGETING);
assertThat(systemVariantsByAbi.get(toAbi(AbiAlias.X86)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( variantAbiTargeting(AbiAlias.X86, ImmutableSet.of(AbiAlias.X86_64, AbiAlias.MIPS)), variantSdkTargeting(LOWEST_SDK_VERSION))); assertThat(systemVariantsByAbi.get(toAbi(AbiAlias.X86_64)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( variantAbiTargeting(AbiAlias.X86_64, ImmutableSet.of(AbiAlias.X86, AbiAlias.MIPS)), variantSdkTargeting(LOWEST_SDK_VERSION))); assertThat(systemVariantsByAbi.get(toAbi(AbiAlias.MIPS)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( variantSdkTargeting(LOWEST_SDK_VERSION))); for (Variant variant : systemVariantsByAbi.values()) { assertThat(variant.getApkSetList()).hasSize(1); ApkSet apkSet = variant.getApkSet(0); apkSet .getApkDescriptionList()
assertThat(systemVariant.getTargeting()).isEqualTo(UNRESTRICTED_VARIANT_TARGETING);
assertThat(universalVariant.getTargeting()).isEqualTo(UNRESTRICTED_VARIANT_TARGETING);
ImmutableMap<String, ApkSet> splitApkSetByModuleName = Maps.uniqueIndex( splitApkVariant.getApkSetList(), apkSet -> apkSet.getModuleMetadata().getName()); assertThat(splitApkSetByModuleName).hasSize(4); List<ApkSet> apkSetList = standaloneApkVariants(result).get(0).getApkSetList(); assertThat(apkSetList).hasSize(1); assertThat(apkSetList.get(0).getModuleMetadata().getDependenciesList()).isEmpty();
.flatMap(variant -> variant.getApkSetList().stream()) .map(ApkSet::getModuleMetadata) .map(ModuleMetadata::getName)
assertThat(x86Variant.getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( variantAbiTargeting(AbiAlias.X86, ImmutableSet.of(AbiAlias.X86_64, AbiAlias.MIPS)), variantSdkTargeting(LOWEST_SDK_VERSION))); assertThat(x86Variant.getApkSetList()).hasSize(1); ApkSet apkSet = x86Variant.getApkSet(0); if (systemApkBuildMode.equals(SYSTEM)) {
assertThat(standaloneVariantsByAbi.keySet()) .containsExactly(toAbi(AbiAlias.X86), toAbi(AbiAlias.X86_64), toAbi(AbiAlias.MIPS)); assertThat(standaloneVariantsByAbi.get(toAbi(AbiAlias.X86)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( sdkVersionFrom(ANDROID_L_API_VERSION), sdkVersionFrom(ANDROID_M_API_VERSION))))); assertThat(standaloneVariantsByAbi.get(toAbi(AbiAlias.X86_64)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( sdkVersionFrom(ANDROID_L_API_VERSION), sdkVersionFrom(ANDROID_M_API_VERSION))))); assertThat(standaloneVariantsByAbi.get(toAbi(AbiAlias.MIPS)).getTargeting()) .ignoringRepeatedFieldOrder() .isEqualTo( sdkVersionFrom(ANDROID_M_API_VERSION))))); for (Variant variant : standaloneVariantsByAbi.values()) { assertThat(variant.getApkSetList()).hasSize(1); ApkSet apkSet = variant.getApkSet(0); assertThat(apkSet.getApkDescriptionList()).hasSize(1); assertThat(apkSetFile).hasFile(apkSet.getApkDescription(0).getPath());
ImmutableMap<String, ApkSet> splitApkSetByModuleName = Maps.uniqueIndex( splitApkVariant.getApkSetList(), apkSet -> apkSet.getModuleMetadata().getName()); assertThat(splitApkSetByModuleName).hasSize(2);
.map( variant -> getOnlyElement(getOnlyElement(variant.getApkSetList()).getApkDescriptionList()) .getPath()) .collect(toImmutableSet());
BuildApksResult result = extractTocFromApkSetFile(apkSetFile, outputDir); assertThat(standaloneApkVariants(result)).hasSize(1); assertThat(standaloneApkVariants(result).get(0).getTargeting().getAbiTargeting()) .isEqualTo(abiTargeting(ARMEABI_V7A)); assertThat(splitApkVariants(result)).hasSize(1); ImmutableSet<AbiTargeting> abiTargetings = splitApkVariants(result).get(0).getApkSetList().stream() .map(ApkSet::getApkDescriptionList) .flatMap(list -> list.stream().map(ApkDescription::getTargeting))
Variant splitApkVariant = splitApkVariants(result).get(0); assertThat(splitApkVariant.getApkSetList()).hasSize(1); assertThat(apkNamesInVariant(splitApkVariant)) .containsExactly("base-master.apk", "base-es.apk", "base-other_lang.apk");
assertThat(standaloneApkVariant.getApkSetList()).hasSize(1); ApkSet shards = standaloneApkVariant.getApkSet(0); assertThat(shards.getModuleMetadata().getName()).isEqualTo("base"); assertThat(shards.getApkDescriptionList()).hasSize(1);
assertThat(result.getVariantList()).hasSize(1); Variant variant = result.getVariant(0); assertThat(variant.getApkSetList()).hasSize(1); ApkSet apkSet = variant.getApkSet(0);
assertThat(variant.getApkSetList()).hasSize(1); ApkSet apkSet = variant.getApkSetList().get(0); assertThat(apkSet.getModuleMetadata().getIsInstant()).isTrue(); assertThat(apkSetFile).hasFile(apkSet.getApkDescription(0).getPath()); assertThat(variant.getApkSetList()).hasSize(1); apkSet = variant.getApkSetList().get(0); assertThat(apkSet.getModuleMetadata().getIsInstant()).isTrue(); assertThat(apkSetFile).hasFile(apkSet.getApkDescription(0).getPath());