Estou usando as notificações do Google no meu aplicativo e, até agora, fiz isso abaixo no manifesto:
<!-- GCM -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- This app has permission to register and receive data message. -->
<!-- Creates a custom permission so only this app can receive its messages. NOTE: APP_PACKAGE.permission.C2D_MESSAGE -->
<permission android:name="com.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.myapp.permission.C2D_MESSAGE" />
<!-- END GCM -->
Funcionou perfeitamente até atualizar meu Nexus 7 para o Android 5.0.
Agora, quando tento instalar o aplicativo neste dispositivo com o Eclipse, recebo este erro:
INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg = com.myapp
Eu não entendo o que está errado? Estava funcionando perfeitamente até o Android 5.0.
Sei que estou usando C2D_MESSAGE
em duas linhas permission
e , uses-permission
mas copiei esse código do guia original do Google GCM, por isso deve estar bem.
android
google-cloud-messaging
android-notifications
android-5.0-lollipop
Null Pointer Exception
fonte
fonte
Respostas:
Eu encontrei uma solução que funciona para mim.
No meu dispositivo (Nexus 7), Android 5.0. Pirulito sigo estes passos.
Após a desinstalação do aplicativo, você encontrará
App Name
em Lista de aplicativos daDownloaded
guia.YourApp
uma tag "NÃO INSTALADO"OptionMenu
e selecione "Desinstalar para todos os usuários"Após essas etapas, instalei com êxito o novo aplicativo e ele está funcionando bem.
fonte
Remover
Executar aplicativo ... Em seguida, adicione o permisson novamente e execute o aplicativo.
Pronto!.
fonte
${applicationId}
vez deEu tive o mesmo problema com uma permissão de assinatura personalizada no Android-21 e a resolvi, certificando-me de que estava fazendo uma desinstalação completa.
Este é um caso extremo que ocorre quando:
Exemplo de linha de comando
Aqui está uma transcrição da linha de comando que demonstra o problema e como resolvê-lo. Neste ponto, uma versão de depuração está instalada e estou tentando instalar uma versão de produção assinada com a chave de lançamento:
Exemplo do Eclipse
Indo na direção oposta (tentando instalar uma compilação de depuração do Eclipse quando uma compilação de versão já está instalada), recebo o seguinte diálogo:
Se você responder sim neste momento, a instalação será bem-sucedida.
Exemplo de dispositivo
Conforme indicado em outra resposta, você também pode acessar uma página de informações do aplicativo nas configurações do dispositivo, clicar no menu excedente e selecionar "Desinstalar para todos os usuários" para evitar esse erro.
fonte
Eu resolvi isso sem ter que recorrer à desinstalação do apk alternativo primeiro (que dor, certo?). Para instalar com êxito uma versão de depuração e lançamento de um apk, basta usar o espaço reservado $ {applicationId} interno do gradle no AndroidManifest.xml para modificar os valores android: name das permissões em tempo de compilação.
O trecho de arquivo build.gradle:
O trecho de arquivo AndroidStudio.xml:
Você pode inspecionar o arquivo AndroidManifest.xml modificado no apk usando
aapt l -a app-debug.apk
para garantir que o espaço reservado foi aplicado corretamente. Se você usar vários tipos de produtos, tenho certeza de que pode aplicar uma variação desse método para atender às suas necessidades.fonte
applicationId
em dois diferentesproductFlavors
, e usar${applicationId}
o efeito será o mesmo.Remova qualquer referência "codificada" do nome do seu pacote, do arquivo de manifesto.
(Essa é uma prática recomendada mesmo que você não esteja usando
productFlavors
)Por exemplo, se o seu manifesto contiver:
Alterou para:
Em seguida, no seu arquivo gradle do módulo, defina seu relevante
applicationId
:Você pode seguir este tutorial para obter mais informações
fonte
${applicationId}
corrigiu o problema para mim!tente desinstalar o aplicativo com adb:
fonte
Failure [DELETE_FAILED_INTERNAL_ERROR]
. O que pode ser a razão?Ao fornecer esse erro, ele mencionará claramente o nome do pacote do aplicativo, devido ao qual a permissão foi negada. E apenas desinstalar o aplicativo não resolverá o problema. Para resolver o problema, precisamos fazer o seguinte passo:
Problema resolvido: D
fonte
Instalando um aplicativo no OS 5.0, recebo esta mensagem:
Não há pacotes duplicados, e podemos resolver esse problema desinstalando manualmente o aplicativo antigo ou usando o adb:
adb uninstall com.yourpackage
fonte
Nenhuma das opções acima funcionou para mim. Meu aplicativo estava funcionando bem antes do Lollipop. Mas quando eu testei no Lollipop, o erro acima surgiu. Ele se recusou a instalar. Eu não tinha nenhuma versão anterior instalada, portanto, todas as soluções acima são inválidas no meu caso. Mas, graças a esta solução SO, agora está funcionando bem. Assim como a maioria dos desenvolvedores, segui o tutorial enganoso do Google e adicionei as permissões copiando e colando assim:
Isso funcionaria com versões mais antigas <Lollipop. Então agora eu mudei para:
fonte
O CommonsWare está certo, mas, na minha opinião, esta é uma maneira ruim (de erro) de dizer: "O apk instalado no dispositivo é assinado com um certificado diferente do certificado que você está tentando instalar" .
Este é provavelmente um novo bug, pois no passado costumava perguntar se desinstalava ou não o aplicativo do dispositivo devido a um certificado errado.
A solução mais dolorosa possível é desinstalar o aplicativo manualmente.
Além disso, o que fizemos em prol do desenvolvimento da equipe, adicionamos o keystore de depuração ao nosso repositório e apontamos o gradle para usá-lo da seguinte forma:
E agora, ao passar dispositivos entre os membros da equipe, todos usamos o mesmo certificado de depuração, portanto não há problema. :)
fonte
No Android 5, verifique suas configurações -> aplicativos. Em vez de excluir apenas o usuário ativo (já que o Android 5 pode ter vários usuários e meu telefone tinha um usuário convidado), toque no botão acessório no canto superior direito da ação / barra de ferramentas e escolha "desinstalar para todos os usuários". Parece que no Android 5, quando você desinstala do iniciador, desinstala apenas o aplicativo para o usuário ativo.
O aplicativo ainda está no dispositivo. Isso me deixou deslumbrado, pois estava tentando instalar uma versão de lançamento e não funcionou. Por isso, pensei que devia estar porque ainda tenho a versão de depuração instalada e desinstalou o aplicativo. Mas ainda não foi possível instalar. A primeira pista foi um registro na lista de aplicativos do aplicativo desinstalado com a mensagem ao lado de que ele foi desinstalado (imagem).
fonte
Veja este link e disse que funcionará quando eles forem assinados pela mesma chave. A chave de liberação e a chave de depuração não são as mesmas.
Então faça:
fonte
substitua as linhas abaixo:
fonte
No meu caso, eu tinha vários aplicativos instalados com o mesmo nome de domínio no nome do pacote, como a seguir.
Eu tive que desinstalar todos os aplicativos com nomes de pacotes semelhantes e reinstalá-los novamente, a fim de se livrar do problema.
Para encontrar todos os nomes de pacotes do dispositivo, usei o seguinte.
Então peguei os pacotes que correspondem ao nome do pacote que estou procurando.
Em seguida, desinstale todos os aplicativos com esse domínio.
Você também pode desinstalar os aplicativos usando o
Settings
aplicativo. Vou aoSettings -> Apps -> Find the app -> Uninstall
Espero que ajude alguém com o mesmo problema que eu.
fonte
Anteriormente, costumava-se dizer que um aplicativo com assinatura diferente é encontrado no dispositivo. Ao instalar a partir do IDE, ele também pergunta se deseja desinstalá-lo.
Mas acho que no Android 5.0 eles mudaram o motivo da desinstalação. Isso não acontece se você estiver instalando um aplicativo com a mesma assinatura
fonte
Encontrei o mesmo problema com um Android Lollipop 5.0.1 do nexus 5:
E, no meu caso, não consegui resolver esse problema
uninstalling
do aplicativo porque era umandroid app
, mas tive que alterar ocustom permissions
nome do aplicativo emmanifest
porque eram iguais aos de um aplicativo Android, que não foi possível desinstalar ou fazer alterações.Espero que isso ajude alguém!
fonte
No meu caso, recebi o seguinte erro
Quando eu estava tentando instalar o aplicativo que tem o nome do pacote
com.abc.Secondapp
. Aqui o ponto foi que o aplicativo com o nome do pacotecom.abc.Firstapp
já estava instalado no meu aplicativo.Resolvi esse erro desinstalando o aplicativo com o nome do pacote
com.abc.Firstapp
e instalando o aplicativo com o nome do pacotecom.abc.Secondapp
Espero que isso ajude alguém durante o teste.
fonte
No seu arquivo AndroidManifest.xml, altere os nomes das permissões especialmente declaradas, por exemplo:
para isso,
com.myapprocks esta parte resolve o conflito com seu outro aplicativo.
fonte
No meu caso, eu estava usando uma biblioteca de terceiros (ou seja, fornecedor) e a biblioteca vem com um aplicativo de amostra que eu já tinha instalado no meu dispositivo. Portanto, esse aplicativo de amostra estava em conflito toda vez que tento instalar meu próprio aplicativo implementando a biblioteca. Acabei de desinstalar o aplicativo de exemplo do fornecedor e ele funciona depois.
fonte
Eu desinstalei a versão anterior. Funcionou para mim.
fonte
Reiniciei meu telefone depois de desinstalar o aplicativo e ele funcionou
fonte
Se você tem um sabor diferente do aplicativo, tente desinstalá-lo primeiro. Isso me ajudou quando tive o mesmo problema.
fonte