app-release-unsigned.apk no está firmado

199

Descargué el archivo zip de una aplicación de Android en github e intento ejecutarlo, pero aparece un cuadro de diálogo con este mensaje

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

Estoy usando Android Studio. ¿Que se supone que haga?

Andrés
fuente

Respuestas:

438

Si alguien quiere depurar la versión de lanzamiento usando Android Studio, siga estos pasos:

  1. Establezca la variante de compilación en el modo de liberación.

ingrese la descripción de la imagen aquí

  1. Haga clic derecho en la aplicación en el panel de navegación izquierdo, haga clic en Abrir configuración del módulo .

  2. Vaya a la pestaña Firma. Agregue una configuración de firma y complete la información. Seleccione su llavero también.

ingrese la descripción de la imagen aquí

  1. Vaya a la pestaña Tipo de compilación . Seleccione el modo de liberación y configure:

-Debuggable a verdadero .

-Signing Config a la configuración . (El que acabas de crear).

ingrese la descripción de la imagen aquí

Sincroniza tu gradle. ¡Disfrutar!

Furia Nocturna
fuente
3
¿Deberíamos establecer Debuggable en falso cuando realmente generamos el APK de lanzamiento para prod? ¿O el estudio lo hará solo?
Ishaan Garg
77
@IshaanGarg Debes configurar debuggable a false al hacer el lanzamiento apk
NightFury
1
Uno pensaría que sería el predeterminado el primero que se preguntó por qué no lo hace ... tal vez sería malo para algunos firmar paquetes que no querían firmar ... pero gracias, hombre, olvidé establecer el tipo de compilación " Configuración de firma "y hasta la captura de pantalla, no lo recordaba
CrandellWS
14
existe NINGUNA NECESIDAD para establecer depurable de verdad , (a menos que realmente lo que pretende).
computingfreak
44
Sin embargo, debe tener en cuenta que después de establecer una configuración para el tipo de compilación, toda la información de sus claves (incluidas las contraseñas) aparecerá en el archivo gradle ...
Jacob.B
95

Asegúrese de que la variante de compilación esté configurada para depurar (y no lanzar ) en Android Studio (consulte el panel de variantes de compilación ).

Si está configurado para depurar, debería firmar automáticamente la aplicación con el almacén de claves de depuración generado automáticamente, sin editar los scripts de compilación.

Sin embargo, deberá crear y configurar un almacén de claves específico para su lanzamiento.

Documentación oficial, que cubre los modos de depuración y liberación: https://developer.android.com/tools/publishing/app-signing.html

Stéphane
fuente
53

Siempre firme su compilación usando su script DSL build.gradle como este:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

Si desea comprender un poco más del sistema de compilación de Gradle asociado a Android Studio, solo visite:

Guía del usuario del complemento Gradle

Martin Revert
fuente
¿Pero por qué tengo que hacer eso? En la guía dicen "Por defecto, hay una configuración de depuración configurada para usar un almacén de claves de depuración, con una contraseña conocida y una clave predeterminada con una contraseña conocida". No tengo ningún problema con otras aplicaciones.
Andrew
Si su contraseña está bien y se puede acceder a debug.keystore, no lo sé. Los problemas habituales que vi en el pasado con esto son permisos de archivo o permisos de directorio. Tal vez el proyecto que descargó es mantener archivos locales de Android Studio que apuntan a otro almacén de claves de depuración que no sea el suyo. En cualquier caso, su registro de Gradle debe mostrar el error de ruta, incluya ese registro para obtener más ayuda.
Martin revierte el
Hmmm, tampoco funciona para mí. No hay errores de gradle, pero sigo recibiendo el error de firma (y apunta a mi archivo de claves).
Brian Knoblauch
¡Hola Brian! ¿Podría intentar eliminar su debug.keystore? Luego, inicie un nuevo proyecto ficticio y se debe generar un nuevo almacén de claves. Después de eso, vuelva a abrir su proyecto real e inténtelo. Es lo único que puedo recomendar si algo más comentado antes falla.
Martin Revert
1
¿No se debug.keystoreencuentra en la .androidcarpeta? Es posible que desee dar el camino completo a menos que lo haya movido a su proyecto
Gokhan Arik
36

Pude depurar con éxito la APK firmada. Siga este procedimiento:

  1. Elija la versión "release" en la barra de herramientas "Build Variant"
  2. En el Build.gradlepara el conjunto de módulosdebuggable true para el tipo de compilación de lanzamiento
  3. Vaya a Archivo-> Estructura del proyecto-> en la pestaña de firma, complete toda la información-> en la pestaña Aromas-> Elija la configuración de firma que acaba de crear
  4. Establecer los puntos de interrupción
  5. Ejecute la aplicación en modo de depuración
Mohammad Khan
fuente
No funciona para mi He configurado debuggable true para la variante de preparación, pero aún así, debe firmar el apk antes de compilar.
Nishant Tanwar
18

Si alguien quiere depurar y lanzar una variante de compilación separada usando Android Studio 3.5, siga los pasos a continuación: 1. Configure la variante de compilación en el modo de lanzamiento.

Variante de construcción

  1. Ir a Archivo >> Estructura del proyecto
  2. Seleccione Módulos, luego Configuración de firma
  3. Haga clic en el ícono Más en Configuración de firma

Configuración de firma

  1. Seleccione la sección de lanzamiento y proporcione la información de la aplicación de lanzamiento, luego aplique y OK.

registrarse

  1. Vaya al nivel de su aplicación build.gradley cambie su buildTypessección> "lanzamiento" como se muestra a continuación.

final

Luego ejecuta tu proyecto. Feliz codificación.

Shohel Rana
fuente
¿De dónde obtienes el archivo .jks?
Marc Alexander
@MarcAlexander aquí no hay ningún código .jks generar captura de pantalla. Puede generar un archivo .jks desde el editor de estudio de Android.
Shohel Rana
13

signatureConfigs debe estar antes de buildTypes

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
NickUnuchek
fuente
12

si quieres ejecutar la aplicación en modo de depuración

1) Mira la parte inferior izquierda, arriba de Favoritos hay variantes de construcción

2) Haga clic en Construir variantes. Haga clic en liberar y elija depurar

funciona perfecto !!!

Samir Mangroliya
fuente
9

El proyecto de aplicación que descargó puede incluir una información firmada en el archivo de build.gradle. Si viste códigos como estos:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

puedes eliminarlos e intentarlo de nuevo.

Alex Tam
fuente
8

Para gradle Kotlin dsl

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}
Evgenii Vorobei
fuente
6

Por razones de seguridad, no puede instalar un apk sin firmar en Android. Entonces, si solo tiene el apk sin firmar: debe firmarlo. Aquí está cómo hacerlo: enlace

Tenga en cuenta que puede firmar el apk con un certificado autofirmado.

Una alternativa puede ser:

  • para descargar el apk firmado si está disponible.
  • para descargar las fuentes, compílelas (con Android-Studio o gradle o ...). Producirá múltiples aplicaciones y una de ellas estará firmada con su clave de depuración (y así podrá instalarla)
ben75
fuente
1
No estoy seguro de entender. Descargué el código postal de la aplicación y estoy tratando de compilarlo con Android Studio ...
Andrew
así que debes compilar una versión firmada. Por lo general, la versión firmada se crea al mismo tiempo y se encuentra en el mismo directorio que la sin firmar.
ben75
Si genero un apk firmado, funciona, pero no puedo hacerlo cada vez que tengo que probar la aplicación. Me falta algo aquí, solo quiero probar la aplicación como lo hago con mis propias aplicaciones ...
Andrew
5

Mi problema se resolvió cambiando la variante de compilación según lo sugerido por Stéphane, si alguien estaba luchando por encontrar las "Variantes de compilación", como hice aquí, hay una captura de pantalla donde puede encontrarla.

ingrese la descripción de la imagen aquí

yehyatt
fuente
1
Me enfrento a problemas después de cambiar la variante de compilación de Debug a Release
Parth Patel
2

En la barra de la ventana de herramientas, seleccione Variantes de compilación. Cambie la variante de compilación de Release a Debug

Bhaskar Vaddadi
fuente
2

Cómo resolví esto

Este error se produce porque ha configurado sus variantes de compilación en el modo de lanzamiento. configúrelo en modo de compilación y vuelva a ejecutar el proyecto.

Si desea ejecutar en modo de lanzamiento, simplemente genere una apk firmada de la manera en que lo hacemos normalmente al lanzar la aplicación

Benja
fuente
¿Solo tengo las opciones "depurar" y "liberar"?
Steve Smith
0

Mi solución fue cambiar el nombre de mi configuración de firma de la "configuración" predeterminada a "depurar". Para verificarlo, lo cambié a otro nombre aleatorio y obtuve el error nuevamente, luego lo cambié a "depurar" y el error desapareció. Entonces, aunque parece artificial y tiendo a no creer que esta es toda la historia, pruebe esta solución.

elliptic1
fuente
0

También aparece este problema, y ​​mi código a continuación

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

la razón es un error de nombre de propiedad, debe ser clave Contraseña, no clave

xmliu
fuente
0

Lo que finalmente funcionó para mí, y no tengo idea de por qué, es:

  • Fui a LastPass (el servicio que uso para mantener todas mis contraseñas)
  • Seleccione mi contraseña colocando el cursor sobre la contraseña y haciendo doble clic
  • Una vez seleccionado, presiono cmd C para copiar
  • Fui al estudio de Android y cmd V para pegar

Observe que intenté copiar muchas veces seleccionando la contraseña haciendo clic al final de la contraseña y seleccionando la contraseña moviendo el mouse.

Es extraño, pero solo funcionó haciendo doble clic en la parte superior de la contraseña para copiarla.

También utilicé el método Abrir configuración de módulo> Firma ... explicado por @NightFury en esta publicación.

Rudy Espadas
fuente
0

agregar líneas de código debajo en el archivo build.gradel funcionó para mí, agregarlas en el bloque buildTypes debajo de la versión como se muestra

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Gareema
fuente