132 votes

Erreur d'installation: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?

Je développe une petite application qui répertorie toutes les applications présentes / installées sur l'appareil Android. Mais je reçois l'erreur ci-dessous pendant que j'essaie d'exécuter le code.

Erreur d'installation: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

S'il vous plaît, quelqu'un peut-il m'aider à résoudre cette erreur?

91voto

Andy Points 1546

Il pourrait y avoir une autre raison pour cette erreur. L'attribut

 android:taskAffinity="string" 
 

Devrait toujours commencer par un point, comme:

 android:taskAffinity=".string" 
 

70voto

suresha Chilukuri Points 381

Le nom de l'activité doit être précédé de "." dans votre fichier manifeste.

49voto

Ribo Points 1014

Le INSTALL_PARSE_FAILED_MANIFEST_MALFORMED code d'erreur est renvoyé par PackageParser.java lorsqu'il détecte tout d'un grand nombre d'erreurs dans l'manifest.xml fichier.

Pour isoler l'erreur, regardez dans le logcat (quand vous faites le " adb install foo.apk de "commande"). Dans le problème que j'ai rencontré, logcat:

W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
D/Finsky  (32707): [1] WorkerTask.onPreExecute: Verification Requested for id = 6,   data=file:///data/local/tmp/foo.apk flags=112 fromVerificationActivity=false
W/PackageParser(32707): /data/local/tmp/foo.apk (at Binary XML file line #214): <provider> does not include authorities attribute
D/Finsky  (32707): [716] PackageVerificationService.getPackageInfo: Cannot read archive for file:///data/local/tmp/foo.apk in request id=6
D/Finsky  (32707): [1] PackageVerificationReceiver.onReceive: Verification requested, id = 6
W/ActivityManager(  360): No content provider found for permission revoke: file:///data/local/tmp/foo.apk
I/PackageManager(  360): Copying native libraries to /data/app-lib/vmdl1205566381
W/PackageParser(  360): /data/app/vmdl1205566381.tmp (at Binary XML file line #214): <provider> does not include authorities attribute

Dans la quatrième ligne ci-dessus, vous pouvez voir que PackageParser se plaint de ce que la ligne no 214 de la manifest.xml fichier "<fournisseur> ne comprend pas les autorités d'attribut". Voir la liste plus bas de tous les cas dans PackageParser qui renvoie que le code d'erreur. (PackageParser est la seule classe qui produit le PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED code d'erreur)

Dans mon cas, le message "<fournisseur> ne comprend pas les autorités d'attribut" est produit par ligne de 2490 PackagerParser.java dans le parseProvider fonction appelée par parseApplication.


À partir de la version 4.1.1 de frameworks/base/core/java/android/content/pm/PackageParser.java, PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED est référencé sur ces lignes dans ces méthodes. Si la ligne de code source numéro est suivi par une chaîne de caractères entre guillemets c'est le message imprimé dans le logcat. si le numéro de ligne est suivie par une expression de Java, qui est le code qui a causé que le code d'erreur sera retourné que cette fonction doit être analysé afin de voir ce qui a causé le message d'erreur sera retourné. Dans quelques cas, je ne pouvais pas isoler la cause d'erreur à un appel de méthode spécifique.

in parsePackage:
  536:  (only used in 'core apps' with no 'pkg')
  973:  "<manifest> has more than one <application>"
  1275: "Bad element under <manifest>: "      --if RIGID_PARSER

in parsePermissionGroup:
  1464: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-group>", sa,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_name,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_label,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_icon,
    com.android.internal.R.styleable.AndroidManifestPermissionGroup_logo)
  1482: !parseAllMetaData(res, parser, attrs, "<permission-group>", perm,
    outError)

in parsePermission:
  1506: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission>", sa,
    com.android.internal.R.styleable.AndroidManifestPermission_name,
    com.android.internal.R.styleable.AndroidManifestPermission_label,
    com.android.internal.R.styleable.AndroidManifestPermission_icon,
    com.android.internal.R.styleable.AndroidManifestPermission_logo)
  1530: "<permission> does not specify protectionLevel"
  1541: "<permission>  protectionLevel specifies a flag but is not based on signature type"
  1548: !parseAllMetaData(res, parser, attrs, "<permission>", perm, outError)

in parsePersmissionTree:
  1572: !parsePackageItemInfo(owner, perm.info, outError,
    "<permission-tree>", sa,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_name,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_label,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_icon,
    com.android.internal.R.styleable.AndroidManifestPermissionTree_logo)
  1585: "<permission-tree> name has less than three segments: "+perm.info.name
  1595: !parseAllMetaData(res, parser, attrs, "<permission-tree>", perm, outError)

in parseInstrumentation:
  1625: new Instrumentation(mParseInstrumentationArgs, new InstrumentationInfo())
  1648: "<instrumentation> does not specify targetPackage"
  1654: !parseAllMetaData(res, parser, attrs, "<instrumentation>", a, outError)

in parseApplication:
  1678: buildClassName(pkgName, name, outError) == null
  1851: (Set by various other functions)
  1869: parseActivity(owner, res, parser, attrs, flags, outError, false, hardwareAccelerated) == null
  1878: parseActivity(owner, res, parser, attrs, flags, outError, true, false) == null
  1887: parseService(owner, res, parser, attrs, flags, outError) == null
  1896: parseProvider(owner, res, parser, attrs, flags, outError) == null
    2484: "Heavy-weight applications can not have providers in main process"
    2890: "<provider> does not incude authorities attribute"
  1905: parseActivityAlias(owner, res, parser, attrs, flags, outError) == null
  1917: parseMetaData(res, parser, attrs, owner.mAppMetaData, outError) == null
  1969: "Bad element under <application>: "+tagName

Il est regrettable que vous avez à fouiller dans le logcat et la source de comprendre quelles sont les causes d'un problème.

48voto

Samuel Points 71

J'avais cette erreur parce que j'avais des lettres majuscules dans mon nom de paquet comme celui-ci

 Com.Example.packagename
 

après l'avoir changé pour quelque chose comme

 com.example.packagename
 

c'était résolu

9voto

Diptendu Points 81

Vérifiez le nom de votre activité dans le fichier manifeste

ou le nom du package dans l'activité principale / la classe

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X