Estoy usando notificaciones de Google en mi aplicación, y hasta ahora lo he hecho a continuación en el manifiesto:
<!-- 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 -->
Funcionó perfectamente hasta que actualicé mi Nexus 7 a Android 5.0.
Ahora, cuando intento instalar la aplicación en este dispositivo con Eclipse, aparece este error:
INSTALL_FAILED_DUPLICATE_PERMISSION perm = com.myapp.permission.C2D_MESSAGE pkg = com.myapp
No entiendo lo que está mal? Funcionaba perfectamente hasta Android 5.0.
Yo sé que estoy usando C2D_MESSAGE
en dos líneas, permission
y uses-permission
aunque he copiado el código de la guía original de Google GCM, por lo que debe estar bien.
android
google-cloud-messaging
android-notifications
android-5.0-lollipop
Excepción de puntero nulo
fuente
fuente
Respuestas:
He encontrado una solución que me funciona.
En mi dispositivo (Nexus 7) Android 5.0. Lollipop Sigo estos pasos.
Después de desinstalar la aplicación, encontrará
App Name
en la lista de aplicaciones de laDownloaded
pestaña.YourApp
una etiqueta "NO INSTALADA"OptionMenu
y seleccione "Desinstalar para todos los usuarios"Después de estos pasos, instalo con éxito la nueva aplicación y está funcionando bien.
fuente
Eliminar
Ejecutar aplicación ... Luego agregue el permiso nuevamente y ejecute la aplicación.
¡Listo!.
fuente
${applicationId}
lugar de codificar las queTuve el mismo problema con un permiso de firma personalizado en Android-21 y lo resolví asegurándome de que estaba haciendo una desinstalación completa.
Este es un caso extremo que ocurre cuando:
Ejemplo de línea de comando
Aquí hay una transcripción de línea de comandos que demuestra el problema y cómo resolverlo. En este punto, se instala una versión de depuración y estoy tratando de instalar una versión de producción firmada con la clave de lanzamiento:
Eclipse ejemplo
Yendo en la dirección opuesta (tratando de instalar una compilación de depuración de Eclipse cuando ya está instalada una compilación de lanzamiento), aparece el siguiente cuadro de diálogo:
Si solo responde sí en este punto, la instalación tendrá éxito.
Ejemplo de dispositivo
Como se señaló en otra respuesta, también puede ir a la página de información de la aplicación en la configuración del dispositivo, hacer clic en el menú de desbordamiento y seleccionar "Desinstalar para todos los usuarios" para evitar este error.
fuente
He resuelto esto sin tener que recurrir a la desinstalación del apk alternativo primero (qué dolor, ¿verdad? Para instalar con éxito una versión de depuración y lanzamiento de un apk, simplemente use el marcador de posición $ {applicationId} incorporado de gradle en AndroidManifest.xml para modificar los valores de Android: nombre de los permisos en tiempo de compilación.
El fragmento de archivo build.gradle:
El fragmento de archivo de AndroidStudio.xml:
Puede inspeccionar el archivo AndroidManifest.xml modificado dentro de la aplicación apk
aapt l -a app-debug.apk
para asegurarse de que el marcador de posición se haya aplicado correctamente. Si usa varios sabores de productos, estoy seguro de que puede aplicar una variación de este método para satisfacer sus necesidades.fuente
applicationId
en dos diferentesproductFlavors
, y uso${applicationId}
el efecto será el mismo.Elimine cualquier referencia "codificada" del nombre de su paquete de su archivo de manifiesto.
(Esta es la mejor práctica incluso si no la usa
productFlavors
)Por ejemplo, si su manifiesto contiene:
Lo cambió a:
Luego, en el archivo gradle de su módulo, configure su relevante
applicationId
:Puedes seguir este tutorial para más información.
fuente
${applicationId}
solucionó el problema para mí!intenta desinstalar la aplicación con adb:
fuente
Failure [DELETE_FAILED_INTERNAL_ERROR]
. ¿Cuál podría ser la razón?Al dar este error, mencionará claramente el nombre del paquete de la aplicación debido a que se le denegó el permiso. Y solo desinstalar la aplicación no resolverá el problema. Para resolver el problema, debemos realizar el siguiente paso:
Problema resuelto: D
fuente
Instalando una aplicación en OS 5.0 recibo este mensaje:
No hay paquetes duplicados, y podemos resolver este problema desinstalando manualmente la aplicación anterior o usando el adb:
adb uninstall com.yourpackage
fuente
Nada de lo anterior funcionó para mí. Mi aplicación funcionaba bien en versiones anteriores a Lollipop. Pero cuando lo probé en Lollipop, apareció el error anterior. Se negó a instalar. No tenía ninguna versión anterior instalada, por lo que todas las soluciones anteriores no son válidas en mi caso. Pero gracias a esta solución SO ahora está funcionando bien. Al igual que la mayoría de los desarrolladores, seguí el tutorial engañoso de Google y agregué los permisos copiando y pegando así:
Esto funcionaría con versiones anteriores <Lollipop. Entonces ahora cambié a:
fuente
CommonsWare tiene razón, pero en mi opinión, esta es una mala manera (error) de decir: "El apk instalado en el dispositivo está firmado con un certificado diferente al nuevo que está intentando instalar" .
Este es probablemente un nuevo error ya que en el pasado solía preguntar si desinstalar o no la aplicación del dispositivo debido a un certificado incorrecto.
La solución tan dolorosa como podría ser sería desinstalar la aplicación manualmente.
También lo que hemos hecho por el desarrollo del equipo, agregamos el almacén de claves de depuración a nuestro repositorio, y señalamos gradle para usarlo así:
Y ahora, al pasar dispositivos entre los miembros del equipo, todos usamos el mismo certificado de depuración, por lo que no hay problema. :)
fuente
En Android 5, verifique su configuración -> aplicaciones. En lugar de eliminar solo para el usuario activo (dado que Android 5 puede tener varios usuarios y mi teléfono tenía un usuario invitado), toque el botón accesorio en la esquina superior derecha de la barra de acciones / herramientas y elija "desinstalar para todos los usuarios". Parece que en Android 5 cuando solo desinstalas del iniciador, solo desinstalas la aplicación para el usuario activo.
La aplicación todavía está en el dispositivo ... Esto me dejó deslumbrado ya que estaba tratando de instalar una versión de lanzamiento, no funcionó, así que pensé que debía ser porque todavía tengo la versión de depuración instalada, desinstalé la aplicación. Pero aún no se pudo instalar. La primera pista fue un registro en la lista de aplicaciones de la aplicación desinstalada con el mensaje al lado de que se desinstaló (imagen).
fuente
Ver este enlace que dice que funcionará cuando estén firmados con la misma clave. La clave de liberación y la clave de depuración no son lo mismo.
Así que hazlo:
fuente
reemplace las siguientes líneas:
fuente
En mi caso, tuve varias aplicaciones instaladas con el mismo nombre de dominio en el nombre del paquete de la siguiente manera.
Tuve que desinstalar todas las aplicaciones con nombres de paquetes similares y volver a instalarlas para deshacerme del problema.
Para encontrar todos los nombres de paquetes del dispositivo, utilicé lo siguiente.
Luego agarré los paquetes que coinciden con el nombre de mi paquete que estoy buscando.
Luego desinstaló todas las aplicaciones que tienen ese dominio.
También puede desinstalar las aplicaciones usando la
Settings
aplicación. Ve a laSettings -> Apps -> Find the app -> Uninstall
Espero que ayude a alguien que tiene el mismo problema que yo.
fuente
Anteriormente solía decir que se encuentra una aplicación con firma diferente en el dispositivo. Al instalar desde IDE, también le preguntará si desea desinstalarlo.
Pero creo que desde Android 5.0 han cambiado el motivo de la desinstalación. No sucede si está instalando una aplicación con la misma firma
fuente
Encontré el mismo problema con un nexus 5 Android Lollipop 5.0.1:
Y en mi caso no pude solucionar este problema con
uninstalling
la aplicación porque era unaandroid app
, pero tuve que cambiar elcustom permissions
nombre de mi aplicación enmanifest
porque eran lo mismo que una aplicación de Android, que no pude desinstalar ni hacer ningún cambio.Espero que esto ayude a alguien!
fuente
En mi caso recibí el siguiente error
Cuando intentaba instalar la aplicación que tiene el nombre del paquete
com.abc.Secondapp
. Aquí el punto fue que la aplicación con el nombre del paquetecom.abc.Firstapp
ya estaba instalada en mi aplicación.Resolví este error desinstalando la aplicación con el nombre del paquete
com.abc.Firstapp
y luego instalando la aplicación con el nombre del paquetecom.abc.Secondapp
Espero que esto ayude a alguien durante la prueba.
fuente
En su archivo AndroidManifest.xml, cambie los nombres de sus permisos especialmente declarados, por ejemplo:
a esto,
com.myapprocks esta parte resuelve el conflicto con su otra aplicación.
fuente
En mi caso, estaba usando una biblioteca de terceros (es decir, un proveedor) y la biblioteca viene con una aplicación de muestra que ya tenía instalada en mi dispositivo. Así que esa aplicación de muestra ahora entraba en conflicto cada vez que intento instalar mi propia aplicación que implementa la biblioteca. Así que acabo de desinstalar la aplicación de muestra del proveedor y funciona después.
fuente
Desinstalé la versión anterior. Funcionó para mi.
fuente
Reinicié mi teléfono después de desinstalar la aplicación y funcionó
fuente
Si tiene una versión diferente de la aplicación, intente desinstalarla primero. Esto me ayudó cuando tuve el mismo problema.
fuente