use of com.android.tools.build.bundletool.model.ApksigSigningConfiguration in project bundletool by google.
the class ApkSigner method signApk.
public void signApk(Path apkPath, ModuleSplit split) {
if (!signingConfigProvider.isPresent()) {
return;
}
ApksigSigningConfiguration signingConfig = signingConfigProvider.get().getSigningConfiguration(ApkDescription.fromModuleSplit(split));
try (TempDirectory tempDirectory = new TempDirectory(getClass().getSimpleName())) {
Path signedApkPath = tempDirectory.getPath().resolve("signed.apk");
com.android.apksig.ApkSigner.Builder apkSigner = new com.android.apksig.ApkSigner.Builder(signingConfig.getSignerConfigs().stream().map(ApkSigner::convertToApksigSignerConfig).collect(toImmutableList())).setInputApk(apkPath.toFile()).setOutputApk(signedApkPath.toFile()).setV1SigningEnabled(signingConfig.getV1SigningEnabled()).setV2SigningEnabled(signingConfig.getV2SigningEnabled()).setV3SigningEnabled(signingConfig.getV3SigningEnabled()).setOtherSignersSignaturesPreserved(false).setMinSdkVersion(split.getAndroidManifest().getEffectiveMinSdkVersion());
signingConfig.getSigningCertificateLineage().ifPresent(apkSigner::setSigningCertificateLineage);
sourceStampSigningConfig.map(SigningConfiguration::getSignerConfig).map(ApkSigner::convertToApksigSignerConfig).ifPresent(apkSigner::setSourceStampSignerConfig);
apkSigner.build().sign();
Files.move(signedApkPath, apkPath, REPLACE_EXISTING);
} catch (IOException | ApkFormatException | NoSuchAlgorithmException | InvalidKeyException | SignatureException e) {
throw CommandExecutionException.builder().withCause(e).withInternalMessage("Unable to sign APK.").build();
}
}
use of com.android.tools.build.bundletool.model.ApksigSigningConfiguration in project bundletool by google.
the class BuildApksCommandTest method settingBothSigningConfigAndSigningConfigProvider_throwsError.
@Test
public void settingBothSigningConfigAndSigningConfigProvider_throwsError() {
SigningConfiguration signingConfig = SigningConfiguration.builder().setSignerConfig(privateKey, certificate).build();
ApksigSigningConfiguration apksigSigningConfig = ApksigSigningConfiguration.builder().setSignerConfigs(ImmutableList.of(SignerConfig.builder().setPrivateKey(privateKey).setCertificates(ImmutableList.of(certificate)).build())).build();
IllegalStateException e = assertThrows(IllegalStateException.class, () -> BuildApksCommand.builder().setSigningConfiguration(signingConfig).setSigningConfigurationProvider(apkDescription -> apksigSigningConfig).build());
assertThat(e).hasMessageThat().isEqualTo("Only one of SigningConfiguration or SigningConfigurationProvider should be set.");
}
Aggregations