es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Proteja el APK de ser resignado con un keystore diferente.

Acabo de descompilar mi apk firmada utilizando apkTool y he vuelto a firmar una nueva apk con un keystore diferente utilizando la misma carpeta de clases descompiladas. Luego intenté instalar y reemplazar la versión anterior de la apk en mi dispositivo y funciona correctamente.

Pero ahora no quiero que esta apk se vuelva a firmar con un keystore diferente. Si alguien la firma con un keystore diferente, no debería reemplazar la versión anterior ni instalarse.

Comandos para crear una nueva apk firmada:

  1. java -jar apktool.jar d test.apk
  2. java -jar apktool.jar B test
  3. keytool -genkey -v -keystore testrelease.keystore -alias testrelease -keyalg RSA -keysize 2048 -validity 10000
  4. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore testrelease.keystore test_1.apk testrelease

Nota: Aquí no estoy utilizando Playstore para implementar la apk, simplemente lo estoy haciendo en mi dispositivo directamente compartiendo la apk por correo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para evitar que el apk sea re-firmado con un keystore diferente, puedes utilizar la funcionalidad android-keystore. El android-keystore asegura que el apk solo sea firmado con el mismo keystore que se utilizó para firmar el apk original. Para utilizar el android-keystore, necesitas especificarlo en tu archivo build.gradle.

    A continuación se detallan los pasos para usar el android-keystore:

    1. En tu archivo build.gradle, agrega las siguientes líneas:
    android {
        ...
        signingConfigs {
            release {
                storeFile file("testrelease.keystore")
                storePassword "password"
                keyAlias "testrelease"
                keyPassword "password"
                v1SigningEnabled true
                v2SigningEnabled true
                enableV3Signing false
                enableV4Signing false
                useV3SigningVerifier false
            }
        }
        ...
        buildTypes {
            release {
                ...
                signingConfig signingConfigs.release
            }
        }
    }
    
    1. Ejecuta el siguiente comando para construir el apk firmado:
    ./gradlew assembleRelease
    

    Esto creará un apk firmado en el directorio app/build/outputs/apk/release.

    Cuando compartas este apk a través de correo electrónico, asegúrate de incluir el archivo del keystore y la contraseña de forma segura para que nadie pueda re-firmar el apk con un keystore diferente.

    Al utilizar el android-keystore, ahora puedes estar seguro de que el apk solo puede ser instalado o reemplazado con un nuevo apk si está firmado con el mismo keystore.

Comments are closed.