Search in sources :

Example 1 with ApksigSigningConfiguration

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();
    }
}
Also used : ZipPath(com.android.tools.build.bundletool.model.ZipPath) Path(java.nio.file.Path) ApksigSigningConfiguration(com.android.tools.build.bundletool.model.ApksigSigningConfiguration) SigningConfiguration(com.android.tools.build.bundletool.model.SigningConfiguration) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) SignatureException(java.security.SignatureException) InvalidKeyException(java.security.InvalidKeyException) ApksigSigningConfiguration(com.android.tools.build.bundletool.model.ApksigSigningConfiguration) ApkFormatException(com.android.apksig.apk.ApkFormatException)

Example 2 with ApksigSigningConfiguration

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.");
}
Also used : ApksigSigningConfiguration(com.android.tools.build.bundletool.model.ApksigSigningConfiguration) ApksigSigningConfiguration(com.android.tools.build.bundletool.model.ApksigSigningConfiguration) SigningConfiguration(com.android.tools.build.bundletool.model.SigningConfiguration) Test(org.junit.Test)

Aggregations

ApksigSigningConfiguration (com.android.tools.build.bundletool.model.ApksigSigningConfiguration)2 SigningConfiguration (com.android.tools.build.bundletool.model.SigningConfiguration)2 ApkFormatException (com.android.apksig.apk.ApkFormatException)1 ZipPath (com.android.tools.build.bundletool.model.ZipPath)1 IOException (java.io.IOException)1 UncheckedIOException (java.io.UncheckedIOException)1 Path (java.nio.file.Path)1 InvalidKeyException (java.security.InvalidKeyException)1 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)1 SignatureException (java.security.SignatureException)1 Test (org.junit.Test)1