Ошибка установки: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED? - PullRequest
83 голосов
/ 19 мая 2011

Я занимаюсь разработкой небольшого приложения, в котором перечислены все приложения, имеющиеся / установленные на устройстве Android.Но я получаю сообщение об ошибке ниже, в то время как я пытаюсь запустить код.

Ошибка установки: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

Пожалуйста, любой может помочь мне разобраться с этой ошибкой.

Ответы [ 28 ]

66 голосов
/ 25 июля 2011

Имя активности должно начинаться с префикса "."в вашем файле манифеста.

64 голосов
/ 24 декабря 2012

Может быть другая причина этой ошибки. Атрибут

android:taskAffinity="string" 

Всегда должен начинаться с точки, например:

android:taskAffinity=".string" 
39 голосов
/ 04 сентября 2013

У меня была эта ошибка, потому что у меня были заглавные буквы в имени моего пакета, как это

Com.Example.packagename

после того, как я изменил его на что-то вроде

com.example.packagename

было решено

27 голосов
/ 03 сентября 2014

PackageParser.java возвращает код ошибки INSTALL_PARSE_FAILED_MANIFEST_MALFORMED когда он обнаруживает большое количество ошибок в файле manifest.xml.

Чтобы изолировать ошибку, посмотрите logcat (когда вы выполняете команду 'adb install foo.apk'). В проблеме, с которой я столкнулся, 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

В четвертой строке выше вы можете видеть, что PackageParser жалуется, что строка # 214 файла manifest.xml " не включает атрибут полномочий" . Смотрите приведенный ниже список всех случаев в PackageParser, который возвращает этот код ошибки. (PackageParser - единственный класс, который создает код ошибки PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)

В моем случае сообщение " не включает атрибут полномочий" создается строкой 2490 файла PackagerParser.java в функции parseProvider, вызываемой parseApplication.


Начиная с версии 4.1.1 frameworks / base / core / java / android / content / pm / PackageParser.java, PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED упоминается в этих строках в этих методах. Если за номером строки исходного кода следует строка в кавычках, то есть сообщение, напечатанное в logcat. если после номера строки следует Java-выражение, являющееся кодом, вызвавшим возврат этого кода ошибки, то эту функцию следует исследовать, чтобы выяснить, что послужило причиной возврата сообщения об ошибке. В нескольких случаях я не смог выделить причину ошибки для одного конкретного вызова метода.

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

Прискорбно, что вам приходится копаться в logcat и источнике, чтобы выяснить причину проблемы.

9 голосов
/ 08 января 2015

У меня та же проблема, но когда я вызываю процесс следующим образом:

<service
    android:name="com.dexode.tama.AppService"
    android:process="screen" >
</service>

Когда я изменяю на:

<service
    android:name="com.dexode.tama.AppService"
    android:process=":screen" >
</service>

Все начинает работать.

9 голосов
/ 19 мая 2011

Проверьте ваше Имя действия в файле манифеста

или Имя пакета в основном задании / классе

<activity android:name="MainActivity"></activity>
8 голосов
/ 28 августа 2015

Я столкнулся с той же проблемой время назад, в Android Документы они сказали, что если вы не используете ":" в качестве префикса в android:process, вы должны использовать строчную букву, но ониникогда не говорил, что это должен быть пакет как имя процесса, например com.company.app.services.MyService

7 голосов
/ 03 декабря 2012

Моя проблема заключалась в том, что я написал (обратите внимание на - против _):

<meta_data ... /> 
<!-- instead of -->
<meta-data ... />

под действием.Это может быть причиной вашей проблемы.

7 голосов
/ 12 февраля 2012

Любое имя, например android:name, android:process, должно быть в форме имени пакета: начинается с a..z, объединяется с другими с ., не заканчивается . ...

2 голосов
/ 15 июля 2014

Прочитайте журналы вашего устройства Android, чтобы диагностировать эту ошибку. Ожидайте строку "W / PackageParser", объясняющую проблему.

...