Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

228
Views
¿Cómo firmar artefactos AAR en Android?

Actualmente estoy desarrollando una biblioteca de Android .AAR y me gustaría firmar los artefactos lanzados con mi propia clave, para poder determinar si un aar falso con el mismo nombre y funcionalidad ha sido lanzado por mí o no.

Aviso 1:

Quiero poder verificar la autenticidad de mi biblioteca mediante programación, incluso si una falsificada está falsificando solo una parte de la funcionalidad de mi archivo aar.

Aviso 2:

No voy a publicar este aar en maven, sonatype o cualquier otro repositorio público. Así que voy a firmarlo para un flujo de lanzamiento típico, como firmar un archivo apk.

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede usar jarsigner para firmar su biblioteca aar , y puede usar keytool para generar las claves de firma. Ambas herramientas se encuentran en el JDK integrado que viene con Android Studio. Haga lo siguiente para firmar su biblioteca.

Firma

Genere un almacén de claves con un par de claves. Deberá proporcionar los campos del certificado:

 keytool -genkeypair -alias aarsign -keypass mypassword -keystore aarsign.keystore -storepass mypassword -v

Exporte el certificado generado a un archivo PEM:

 keytool -exportcert -rfc -alias aarsign -file aarsign-public.pem -keystore aarsign.keystore -storepass mypassword -v

Cree un almacén de claves que contenga el certificado:

 keytool -importcert -alias aarsign -file aarsign-public.pem -keystore aarsign-public.keystore -storepass mypassword -v

Firma la biblioteca:

 jarsigner -keystore aarsign.keystore -storepass mypassword -keypass mypassword -signedjar lib-signed.aar -verbose lib.aar aarsign

Verificando

Cualquiera que desee atestiguar la autenticidad de la biblioteca debe obtener su certificado (o el almacén de claves con él) de manera confiable e ingresar este comando:

 jarsigner -keystore aarsign-public.keystore -storepass mypassword -verify -verbose -certs lib-signed.aar aarsign

Dará el mensaje

 jar verified.

con algunas advertencias sobre la caducidad del certificado y la marca de tiempo de la firma. Puede deshacerse de estas advertencias creando un certificado más estricto. Consulte la documentación de keytool y jarsigner .

Hay dos formas en las que puede averiguar si su biblioteca ha sido manipulada: resúmenes no coincidentes o certificados no coincidentes. Si alguien genera un aar a partir de un código fuente diferente o con diferentes recursos, el resumen no coincidirá y jarsigner advertirá, por ejemplo:

 jarsigner: java.lang.SecurityException: invalid SHA-256 signature file digest for <file>

Y, si alguien proporciona un certificado diferente al tuyo, jarsigner te avisará:

 Warning: This jar contains entries whose certificate chain is not validated. This jar contains signed entries which are not signed by the specified alias(es). This jar contains signed entries that are not signed by alias in this keystore.
about 4 years ago · Santiago Trujillo Report

0

Porque variant.signingConfig no funciona para mí, he usado

 apply plugin: 'com.android.library' ... android { ... signingConfigs { release { storeFile file("${rootProject.projectDir}/keystore.jks") storePassword "XXXX" keyAlias "alias" keyPassword "XXXX" } } ... } tasks.whenTaskAdded { task -> if (task.name == 'assembleRelease') { def aarPath = "${project.buildDir}/outputs/aar/XXX-release.aar" task.doLast { ant.signjar( alias: android.signingConfigs.release.keyAlias, jar: aarPath, keystore: android.signingConfigs.release.storeFile, storepass: android.signingConfigs.release.storePassword, keypass: android.signingConfigs.release.keyPassword, preservelastmodified: 'true') ant.verifyjar( alias: android.signingConfigs.release.keyAlias, jar: aarPath, keystore: android.signingConfigs.release.storeFile, storepass: android.signingConfigs.release.storePassword, keypass: android.signingConfigs.release.keyPassword) } } }
about 4 years ago · Santiago Trujillo Report

0

Puedes generarlo ejecutando:

 ./gradlew assembleRelease

O desde el menú Gradle, en el lado derecho de Android Studio, seleccione YourLibraryProject->Tasks->Build->AssembleRelease.

Pero, por supuesto, debe agregar la clave de firma en su proyecto de biblioteca. Lea en Firme su aplicación

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!