"Error de análisis: hay un problema al analizar el paquete" al instalar la aplicación de Android

104

Recibí este error al instalar la aplicación de Android ( Parse Error : There is a problem parsing the package.). Hice los siguientes pasos.

  1. La primera vez que instalé la aplicación y funciona bien.

  2. Hice cambios en la aplicación existente y cambié el número de versión en el archivo de manifiesto.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.openintents.samples.BasicOpenARDemo" android:versionCode="2" android:versionName="1.0.1">
  3. Luego exporto la aplicación y termino el proceso de firma del código. Para esto, haga clic derecho en el nodo de su proyecto> seleccione Exportar. Allí verá un asistente. Siga los pasos y finalice la firma del código también.

  4. Obtuve el archivo ARDemo.apk, luego cambié su nombre a ARDemo1.apk

  5. Luego envié este archivo apk a la tarjeta SD de los móviles y comencé la instalación. Obtuve el error anterior.

Busqué en Google, dicen que hay un problema al descomprimir el archivo de manifiesto.

¿Alguien puede decirme qué podría estar mal conmigo?

Raghu
fuente
debe poner el número de versión en tres. consulte el tutorial en japonés en el sitio web de
Hola Ejder, Gracias por tu respuesta. Mi problema ya estaba solucionado. Mi error es "He cambiado el nombre del archivo apk manualmente". En el 2 anterior está el código de versión de mi aplicación, no el valor de minsdk. Puse el valor mindk como 3. Gracias y saludos, Raghavendra K
Raghu
4
solo pensando por qué el cambio de nombre se convierte en un problema?
Mikey
Hola Mike, cambié el nombre después de exportar. Por eso está dando error. Si especificamos un nombre de diferencia al exportar, no podría ser un problema para mí ..
Raghu
1
Hola Cru, Cambiar la versión no no creó este problema. Cambié el nombre del archivo apk una vez que hice la exportación. Crea este problema.
Raghu

Respuestas:

49

Dijiste que la primera vez que instalaste la aplicación funcionó bien.

La única diferencia en los pasos que describió entre las dos versiones son:

  1. El número de versión (supongo que esto no participó en romper nada)
  2. El código
  3. El nombre del archivo .apk

Intente cambiar el nombre del archivo ARDemo1.apk nuevamente a ARDemo.apk (asegúrese de hacer una copia de seguridad de la versión anterior) y vea si eso ayuda. Supongo que tiene algo que ver con el nombre de la apk.

Si aún no funciona, puede eliminar el nombre del archivo apk como la fuente del problema y comenzar a investigar 2) reconstruyendo su versión anterior y ver si tiene el mismo problema nuevamente. Si el problema no existe con la versión reconstruida de su código anterior, entonces sabrá que debe tener algo que ver con su código.

Espero que eso te lleve a alguna parte.

Saludos, Joseph

user175750
fuente
Hola Joseph, Tu conjetura es correcta. Cambié el nombre del archivo apk a uno anterior. Funciona ... Muchas gracias por su ayuda ...
Raghu
Hola, tengo un problema similar. Estoy descargando la aplicación desde un enlace web. Se asienta perfectamente en la SDCard móvil. Pero cuando intento instalarlo, aparece este error. No firmé mi solicitud, básicamente soy un novato en el desarrollo de aplicaciones de Android. Se agradece la ayuda de cualquier tipo :)
varunrao321
2
Me enfrenté a un problema similar y el caso era la versión mínima del SDK en el archivo .gradle. Piense en eso y en la versión de su dispositivo y eso será útil.
user2881604
¡Sí, tienes razón, ese fue el problema del nombre del archivo apk ...!
Arsal Imam
Me cambió el nombre del archivo APK y el parse errorse ha ido, pero al intentar instalarlo ahora me demuestra App not installedque estoy usando un dispositivo de malvavisco y tal vez es el mismo que el tema aquí stackoverflow.com/questions/33930223/...
natsumiyu
45

La instalación puede dar el error especificado al menos en los siguientes casos:

  • El nombre del paquete se cambia después de firmar : use el nombre exacto como el paquete firmado (en su lugar, ajuste el nombre en el manifiesto)
  • El paquete se compila en un nivel de API superior : corrija el nivel de API en el archivo de manifiesto
  • El paquete se ejecuta desde la tarjeta SD : Ejecute (instale) el archivo apk desde la memoria del teléfono O use el comando adb para instalarlo
jmu
fuente
Creo que existen otras condiciones que pueden hacer que esto suceda. Por ejemplo, vea mi comentario sobre la respuesta de Kansasian a continuación sobre cómo recibir este mensaje de error al instalar desde el correo electrónico.
M Katz
La mejor respuesta aquí. Para mí, fue cambiar el nombre del paquete después de que se firmó. Muchas gracias.
Jannie Theunissen
Asumo que necesitas tener un teléfono rooteado para poder instalarlo usando adb install¿verdad?
abbood
No: no se requiere enraizamiento ; sin embargo, es posible que deba habilitar Fuentes desconocidas desde la configuración de seguridad. (sin confirmar)
jmu
Fuentes desconocidas Y depuración usb ... nota: en Windows 8 a veces no reconoce el teléfono en modo MTP, solo PTP ...
SparK
22

Solo he visto el error de análisis cuando la versión de Android en el dispositivo era inferior a la versión para la que se compiló la aplicación. Por ejemplo, si la aplicación está compilada para el sistema operativo Android v2.2 y su dispositivo solo tiene el sistema operativo Android v2.1, obtendrá un error de análisis cuando intente instalar la aplicación.

Sir Scalawag
fuente
Eso me golpeó hace un tiempo, ¡me llevó años darme cuenta!
olafure
14

La razón es que apk no está firmado. Una vez que se firme la apk, el problema se resolverá. http://ionicframework.com/docs/guide/publishing.html Utilice el enlace de las instrucciones para firmar el apk.

Shivendra
fuente
El mismo problema aqui. Después de firmar el apk, funcionó como se esperaba.
Dino Tw
3
Este fue un problema para mí con las compilaciones de Android de Xamarin: primero crea un APK en el Administrador de archivos que no está firmado. Luego, debe elegir "Distribuir" para crear un APK firmado que se pueda instalar.
dodgy_coder
Agregando a lo dodgy_coder escribió: para Xamarin.Android 7 o mayor , o versiones anteriores .
Veverke
13

En lugar de disparar en la oscuridad, averigüe el motivo de este error instalándolo a través de adb:

adb -s emulator-5555 install ~/path-to-your-apk/com.app.apk

Reemplácelo emulator-5555con el nombre de su dispositivo. Puede obtener una lista usando:

adb devices

Al fallar, dará una razón. Razones comunes y sus soluciones:

  1. INSTALL_PARSE_FAILED_NO_CERTIFICATES: Referencia
  2. INSTALL_FAILED_UPDATE_INCOMPATIBLE: Referencia
Veneet Reddy
fuente
¿Qué hago si tuvo éxito?
Jacob Sánchez
1
Esto me ayudó mucho. ¡Gracias!
Tgo1014
7

Compruebe si su dispositivo es compatible con la versión que especificó en minSdkVersion en AndroidManifest.xml. Si no, especifique la versión más baja e intente nuevamente

Mohammed Irfan Tirupattur
fuente
6

Si está compilando y exportando su archivo apk con la versión 2.1 del SDK, no funcionará en ninguna versión de Android por debajo de su exportación SDK "2.1". El software de Android es compatible con versiones anteriores, no con versiones anteriores. Por ejemplo, si está programando con el paquete Android NDK (complemento ann para el SDK de Android) que permite el desarrollo en la familia C / C ++, esto solo es compatible con Android 2.3, la versión 2.2 de Android y versiones anteriores solo admiten compilaciones de Java. Por lo tanto, recibirá el error "Hay un problema al analizar el paquete".

Miguel
fuente
3

Otra posibilidad es que haya guardado el archivo apk en la carpeta PRIVADA de la aplicación y luego intente instalarlo (iniciando una intención desde su código). en este caso, cuando inicia intent, obtiene el paquete de análisis de error. En este caso, el error planteado se trata de problemas de permisos. El punto es guardar el archivo en carpetas privadas no es una buena práctica, sin embargo, si realmente quiere hacerlo, debe escribir el archivo en MODE_WORL_READABLE cuando lo descargue. Tenga en cuenta que MODE_WORLD_READABLE está obsoleto y esta solución no es la mejor ya que tiene algunos problemas de seguridad. Lo mejor es guardar su archivo en un almacenamiento externo.

MojAmiri
fuente
3

No estoy repitiendo lo que se indica aquí para ingresar el almacén de claves, la contraseña, etc. Intente

Construir -> Generar APK firmado -> [Entrada] --- Siguiente ---> seleccionar AMBOS

  • V1 (firma del tarro)
  • V2 (Firma APK completa)

No sé por qué, pero al menos funcionó en mi situación.

JeffNhan
fuente
1
Trabajó para mi. No se verificó en Android Studio MacOS de forma predeterminada.
Vojta
2

Recibí el mismo error (error de análisis, hay un problema al analizar el paquete) al intentar instalar un paquete .apk desde el correo electrónico. Pude solucionar el problema instalando el instalador de paquetes de terceros ApKatcher:

http://www.addictivetips.com/mobile/install-android-apps-from-gmail/

ApKatcher no es la única solución. Un colega solucionó el problema instalando Astro File Manager.

Puede encontrar ambas aplicaciones en Android Marketplace.

kansasiano
fuente
Para agregar otro punto de datos aquí, también recibí este error al instalar desde el correo electrónico, pero se instaló bien cuando usé un cable y adb para instalar el mismo paquete. Desafortunadamente, estaba intentando instalar a través del correo de Yahoo, así que no creo que ApKatcher pueda ayudar.
M Katz
1

Problema similar, usando este código "prestado" y ligeramente modificado:

                Intent intent = new Intent(Intent.ACTION_VIEW);
                File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "myapp.apk");
                intent.setDataAndType(Uri.fromFile(newApk), "application/vnd.android.package-archive");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                result = true;

Era necesario cambiar la creación del archivo a esto (coma en lugar de más en el constructor de archivos, faltaba '/' después del directorio de descarga):

                    File newApk = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myapp.apk");
William T. Mallard
fuente
1

Tenía un par de etiquetas incorrecto en mi archivo de manifiesto.

<meta-data>
</meta-data>

Básicamente entré cuando copié un meta-datacódigo de muestra incorrecto del archivo payu pdf. Mierda.

Siddharth
fuente
1

Una razón podría ser que el nombre de su actividad no está definido en el manifiesto.

    <activity
          android:name=""
          ...>
</activity>

el código anterior estaba creando el mismo problema conmigo

Abhishek
fuente
1

Otro problema que causa este error puede ser la instalación de APK desde el punto de montaje de la tarjeta SD restringido /mnt/media_rw/MicroSD.

Utilice un punto de montaje sin restricciones /Removable/MicroSD.

Honza
fuente
1

Y solo para ayudar a posibles nuevos lectores, otra razón puede ser errores en el archivo de manifiesto. Había escrito mal android:servicecomo android.servicey me encontré con el mismo error ...

MortenSickel
fuente
1

Como lo menciona @Veneet Reddy, instálelo a través de ADB.

Vaya a ADT Bundle / sdk / platform-tools más allá de su .apkarchivo y ejecute el símbolo del sistema como administrador.

Luego ejecute el adb devicescomando que enumerará los dispositivos conectados o emuladores que se están ejecutando.

ingrese la descripción de la imagen aquí

Entonces corre adb -s yourDeviceID install yourApk.apk

ingrese la descripción de la imagen aquí

Nota: desinstale la aplicación si ya la ha instalado antes de volver a instalarla.

Mahoma
fuente
0

Para cualquier otra persona que tenga este problema, la única vez que recibí este error fue cuando la versión de la API en su configuración de compilación de Android no coincide con la del dispositivo físico.

Vaya a Eclipse y haga clic derecho en su proyecto y vaya a propiedades. Seleccione Android - LO QUE LE LLEVA A ANDROID BUILD TARGET. Ajuste su objetivo para que coincida con el dispositivo y vea si eso resuelve el problema.

j2emanue
fuente
0

Tuve este problema, incluso cuando especifiqué la versión correcta de minSDK y targetSDK. Mi problema era que lo estaba usando "android:theme="@android:style/Theme.NoTitleBar.Fullscreen"en la actividad del iniciador, en el dispositivo Jellybean. Cuando eliminé este atributo, funcionó.

usuario1035292
fuente
0

Como se han mencionado algunas de las otras respuestas, puede haber problemas al instalar desde la tarjeta SD. En mi caso, distribuía mi aplicación a través de un archivo adjunto de correo electrónico y, por lo general, funcionaba bien. Simplemente abra el correo electrónico y descargue el archivo adjunto (aparentemente va a la tarjeta SD) y haga clic en él nuevamente y se instalará.

Pero un día no funcionó, y resultó que era porque tenía el teléfono conectado a mi PC de desarrollo a través de USB, y eso colocó la tarjeta SD en un modo diferente o algo así. Entonces, la solución fue simplemente desconectar el teléfono de la PC y luego enviar el correo electrónico nuevamente y descargar el archivo adjunto nuevamente. O bien, coloque la conexión USB en modo "sólo carga" para que la tarjeta SD no esté "conectada" a la PC.

RenniePet
fuente
0

Es posible que también desee verificar los registros en el dispositivo para ver si es algo simple como un problema de permisos. Puede verificar los registros usando adbdesde una computadora host / depuradora:

adb logcat

O si tiene acceso a la consola (o cuando usa Android-x86, obtenga la consola escribiendo Alt+ F1), puede verificar los registros usando el logcatcomando:

logcat
Pierz
fuente
0

Tuve el mismo problema al usar el archivo apk exportado desde android‌ Tools > Export. ¡Usé el archivo apk en la carpeta bin y funcionó!

El archivo apk PS en la carpeta bin se crea después de la primera vez que ejecuta la aplicación en eclipse.

Ali Sheikhpour
fuente
0

utilícelo dentro de build.gradle (Módulo: aplicación)

 minSdkVersion 14
    targetSdkVersion 28
SHUBHASIS MAHATA
fuente
Debe explicar por qué se apuntaron las versiones mínimas 14 y 28. También verifique su formato;)
m02ph3u5
0

He tenido este problema Parse Error : There is a problem parsing the package. que estaba probando en Android-8. Tengo el mismo apk con la misma firma. Todo era igual sin el número de versión y el nombre de la versión. La aplicación se estaba instalando cuando la instalé manualmente, pero este error ocurrió cuando estaba descargando e instalando actualizaciones mediante programación. Entonces he encontrado la causa del problema.

Había una opción para verificar canRequestPackageInstalls () Cuando este método devuelve verdadero, la aplicación se instala correctamente. Siempre volvía falso en mi caso.

Entonces, primero verifico esto y luego dejo que el usuario descargue e instale actualizaciones.

En onCreate ()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            if (!packageManager.canRequestPackageInstalls()) {
                    startActivityForResult(
                        Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(
                            Uri.parse(String.format("package:%s", packageName))
                        ), requestCodeqInstallPackage
                    )
                } else {
                    canInstallPackage = true
                }

        }

En onActivityResult ()

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
            if (requestCode == requestCodeqInstallPackage && resultCode == Activity.RESULT_OK) {
                if (packageManager.canRequestPackageInstalls()) {
                    canInstallPackage = true
                }
            } else {
                canInstallPackage = false
                Toast.makeText(mContext, "Auto update feature will not work", Toast.LENGTH_LONG)
                    .show()
            }
    }

Entonces, cuando necesite instalar la actualización, entonces-

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
   if(canInstallPackage){
      doInstallAppProcess()
   }else{
        // generate error message
   }
}

Espero que ayude a alguien.

Rasel
fuente
-1

Estoy experimentando el mismo mensaje de error "Parse error: Hay un problema al analizar el paquete" con mis APK firmados como con otros, pero sospecho que podría deberse a diferentes razones.

Para probar esto, hice lo siguiente:

Configuración de Windows 8.1 Eclipse ADT Build: v22.6.2-1085508

Genere una nueva aplicación típica de Helloworld que acepta todos los valores predeterminados.

Ejecuté la aplicación en un emulador y un dispositivo en vivo con éxito.

Luego descargué e instalé el apk en mi dispositivo en vivo y lo ejecuté con éxito.

Había generado una apk en la carpeta bin con un tamaño de 782 KB.

Luego exporté la aplicación Helloworld a la misma carpeta bin firmando la aplicación desde mi almacén de claves, que se ha utilizado con éxito en el pasado para promocionar a Google Play.

Creó un APK con un tamaño de 385 KB (reemplazando el apk original).

Cargué el apk en mi dispositivo y cuando fui a instalarlo recibí el error "Parse error: Hay un problema al analizar el paquete" (este es el mismo paquete que se cargó e instaló cuando se hizo como un formulario no exportado).

William Bell
fuente