app-release-unsigned.apk não está assinado

199

Fiz o download do arquivo zip de um aplicativo Android no github e estou tentando executá-lo, mas recebo uma caixa de diálogo com esta mensagem

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

Estou usando o Android Studio. O que eu deveria fazer?

andrew
fonte

Respostas:

437

Se alguém quiser depurar a versão compilada usando o Android Studio, siga estas etapas:

  1. Defina a variante de compilação para o modo de liberação.

insira a descrição da imagem aqui

  1. Clique com o botão direito do mouse no aplicativo no painel de navegação esquerdo, clique em Abrir Configurações do Módulo .

  2. Vá para a guia Assinatura. Adicione uma configuração de assinatura e preencha as informações. Selecione seu chaveiro também.

insira a descrição da imagem aqui

  1. Vá para a guia Tipo de compilação . Selecione o modo de liberação e defina:

-Debuggable para verdadeiro .

-Configurando a configuração . (O que você acabou de criar).

insira a descrição da imagem aqui

Sincronize sua nota. Aproveitar!

Fúria da noite
fonte
3
Devemos definir Debuggable como false ao gerar o APK de lançamento para prod? ou o estúdio fará isso por conta própria?
Ishaan Garg
7
@IshaanGarg Você deve definir debuggable para false ao fazer o lançamento do apk
NightFury
1
Você pensaria que seria o padrão para o primeiro criado, perguntando-se por que não ... talvez seria ruim para alguns assinar pacotes que não queriam assinar ... mas obrigado, cara, eu esqueci de definir o tipo de compilação " assinando config" e até que a imagem, eu não estava me lembrando
CrandellWS
14
NÃO É NECESSÁRIO definir Debuggable como true (a menos que seja realmente o pretendido).
computingfreak
4
Você deve estar ciente de que embora depois de definir a configuração para o tipo de compilação, todas as suas informações chaves (incluindo as senhas) irá aparecer no arquivo Gradle ...
Jacob.B
95

Verifique se a variante de compilação está definida para depurar (e não liberar ) no Android Studio (verifique o painel de variantes de compilação ).

Se definido como depuração, ele deverá assinar automaticamente o aplicativo com o keystore de depuração gerado automaticamente, sem editar os scripts de compilação.

No entanto, você precisará criar e configurar um keystore específico para liberação.

Documentação oficial, cobrindo os modos de depuração e lançamento: https://developer.android.com/tools/publishing/app-signing.html

Stéphane
fonte
53

Sempre assine sua compilação usando o 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
        }
    }
}

Se você quiser entender um pouco mais do sistema de compilação Gradle associado ao Android Studio, visite:

Guia do usuário do plugin Gradle

Martin Revert
fonte
Mas por que tenho que fazer isso? No guia, eles dizem "Por padrão, há uma configuração de depuração configurada para usar um keystore de depuração, com uma senha conhecida e uma chave padrão com uma senha conhecida". Não tenho problemas com outros aplicativos.
andrew
Se sua senha estiver correta e debug.keystore estiver acessível, eu não sei. Os problemas comuns que eu vi no passado com isso são permissões de arquivo ou diretório. Talvez o projeto que você baixou esteja mantendo os arquivos locais do Android Studio que apontam para outro keystore de depuração que não o seu. Em qualquer caso, o seu registro Gradle deve mostrar o erro do caminho; inclua esse registro para obter mais ajuda.
Martin Revert
Hmmm, também não funciona para mim. Sem erros de classificação, mas ainda recebendo o erro de assinatura (e está apontado para o meu arquivo de chaves).
precisa
Oi Brian! Você pode tentar excluir seu debug.keystore? Em seguida, inicie um novo projeto fictício e um novo keystore deve ser gerado. Depois disso, reabra o seu projeto real e tente. É a única coisa que posso recomendar se algo mais comentado antes falhar.
Martin Revert
1
Não está debug.keystorelocalizado em.android pasta? Você pode querer dar caminho completo a menos que você moveu-lo em seu projeto
Gokhan Arik
36

Consegui depurar o APK assinado com êxito, siga este procedimento: -

  1. Escolha a versão "release" na barra de ferramentas "Build Variant"
  2. No Build.gradlepara o conjunto de módulos debuggable truepara o tipo de compilação de release
  3. Vá para Arquivo-> Estrutura do projeto-> na guia Assinatura, preencha todas as informações-> Na guia Sabores-> Escolha a configuração de assinatura que você acabou de criar
  4. Defina os pontos de interrupção
  5. Execute o aplicativo no modo de depuração
Mohammad Khan
fonte
Não está trabalhando para mim. Eu configurei true debuggable para a variante de teste, mas ainda assim, precisa assinar o apk antes de compilar.
Nishant Tanwar
18

Se alguém quiser depurar e liberar variante de compilação separada usando o Android Studio 3.5, siga as etapas abaixo: 1. Defina a variante de compilação no modo de liberação.

Variante de compilação

  1. Vá para Arquivo >> Estrutura do Projeto
  2. Selecione Módulos e, em seguida, Assinando Configuração
  3. Clique no ícone Mais em Signing Config

Configuração de assinatura

  1. Selecione a seção de liberação e forneça as informações do aplicativo de liberação, em seguida, Aplicar e OK.

assinar em

  1. Vá para o nível do seu aplicativo build.gradlee altere a buildTypesseção> "release", como abaixo da captura de tela.

final

Em seguida, execute seu projeto. Feliz codificação.

Shohel Rana
fonte
De onde você obtém o arquivo .jks?
Marc Alexander
@ MarcAlexander aqui não existe nenhum código .jks para gerar Screenshot. Você pode gerar o arquivo .jks no editor de estúdio do Android.
Shohel Rana
13

signatureConfigs deve ser anterior ao 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
fonte
12

se você deseja executar o aplicativo no modo de depuração

1) Olhe para o lado esquerdo inferior, acima de Favoritos há variantes de compilação

2) Clique em Criar variantes. Clique no release e escolha debug

funciona perfeito !!!

Samir Mangroliya
fonte
9

O projeto do aplicativo que você baixou pode incluir uma informação assinada no arquivo build.gradle. Se você viu códigos como estes:

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

você pode excluí-los e tentar novamente.

Alex Tam
fonte
8

For 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
fonte
6

Por motivos de segurança, você não pode instalar um apk não assinado no Android. Portanto, se você tiver apenas o apk não assinado: deverá assiná-lo. Aqui está como fazer isso: link

Observe que você pode assinar o apk com um certificado autoassinado.

Uma alternativa pode ser:

  • para baixar o apk assinado, se disponível.
  • para baixar as fontes, compile-as (com Android-Studio ou gradle ou ...). Ele produzirá vários aplicativos e um deles será assinado com sua chave de depuração (e assim você poderá instalá-lo)
ben75
fonte
1
Não tenho certeza se estou entendendo. Fiz o download do zip do código do aplicativo e estou tentando compilá-lo com o Android Studio ...
andrew
então você deve compilar uma versão assinada. Geralmente, a versão assinada é criada ao mesmo tempo e está localizada no mesmo diretório que o não assinado.
1175 ben28
Se eu gerar um apk assinado, ele funciona, mas não posso fazer isso toda vez que preciso testar o aplicativo. Estou faltando alguma coisa aqui, eu só quero experimentar o aplicativo como faço com meus próprios aplicativos ...
andrew
5

Meu problema foi resolvido alterando a variante de compilação, conforme sugerido por Stéphane, se alguém estava lutando para encontrar as "Variantes de compilação", como eu fiz aqui, é uma captura de tela na qual você pode encontrá-lo.

insira a descrição da imagem aqui

yehyatt
fonte
1
Estou enfrentando problemas após variante mudança de compilação de depuração para lançamento
Parth Patel
2

Na barra de janela da ferramenta, selecione Build Variants Change Build Variant de Release para Debug

Bhaskar Vaddadi
fonte
2

Como eu resolvi isso

Este erro ocorre porque você configurou suas variantes de compilação para o modo de liberação. configure-o para o modo de compilação e execute o projeto novamente.

Se você deseja executar no modo de versão, basta gerar um apk assinado da maneira que fazemos normalmente ao liberar o aplicativo

Benja
fonte
Eu só tenho opções "debug" e "release"?
Steve Smith
0

Minha solução foi alterar o nome da minha configuração de assinatura do padrão "config" para "debug". Para verificar, mudei para outro nome aleatório e obtive o erro novamente e, em seguida, mudei novamente para "debug" e o erro desapareceu. Portanto, embora pareça artificial e eu não acredite que essa seja a história toda, experimente esta solução.

elliptic1
fonte
0

Eu também apareço esse problema, e meu código abaixo

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

o motivo é o erro do nome da propriedade, ele deve ser keyPassword, não keypassword

xmliu
fonte
0

O que finalmente funcionou para mim, e não tenho idéia do porquê, é:

  • Acessou o LastPass (o serviço que eu uso para manter todas as minhas senhas)
  • Selecione minha senha colocando o cursor em cima da senha e clicando duas vezes
  • Uma vez selecionado, pressione cmd C para copiar
  • Fui estudar Android e cmd V para colar

Observe que tentei copiar várias vezes selecionando a senha clicando no final da senha e selecionando a senha movendo o mouse.

É estranho, mas só funcionou clicando duas vezes na parte superior da senha para copiá-la.

Também usei o método Open Module Settings> Signing ... explicado por @NightFury nesta postagem.

Rudy Espadas
fonte
0

adicionando linhas de código abaixo no arquivo build.gradel funcionou para mim, adicione-as no bloco buildTypes abaixo do release, como mostrado

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