Я разрабатываю небольшое приложение, в котором перечислены все приложения, присутствующие / установленные на устройстве Android. Но я получаю указанную ниже ошибку, когда пытаюсь запустить код.
Ошибка установки: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
Пожалуйста, помогите мне разобраться с этой ошибкой.
Ответы:
У этой ошибки могла быть другая причина. Атрибут
android:taskAffinity="string"
Всегда следует начинать с точки, например:
android:taskAffinity=".string"
источник
Название действия должно начинаться с префикса "." в вашем файле манифеста.
источник
У меня была эта ошибка, потому что в имени моего пакета были заглавные буквы, например
Com.Example.packagename
после того, как я изменил его на что-то вроде
com.example.packagename
это было решено
источник
Код ошибки INSTALL_PARSE_FAILED_MANIFEST_MALFORMED возвращается PackageParser.java, когда он обнаруживает любую из большого количества ошибок в файле 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 «<provider> не включает атрибут полномочий» . См. Приведенный ниже список всех случаев в PackageParser, который возвращает этот код ошибки. (PackageParser - единственный класс, который создает код ошибки PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)
В моем случае сообщение "<provider> не включает атрибут полномочий" создается строкой 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 и источнике, чтобы выяснить, что вызывает проблему.
источник
IntentFilter.MalformedMimeTypeException
которую я пропустил.Проверьте название своей деятельности в файле манифеста
или название пакета в основном мероприятии / классе
<activity android:name="MainActivity"></activity>
источник
У меня такая же проблема, но когда я вызываю такой процесс:
<service android:name="com.dexode.tama.AppService" android:process="screen" > </service>
Когда я перехожу на:
<service android:name="com.dexode.tama.AppService" android:process=":screen" > </service>
Все начинает работать.
источник
Я столкнулся с той же проблемой некоторое время назад, в документах для Android они сказали, что если вы не используете ":" в качестве префикса,
android:process
вы должны использовать строчную букву, но они никогда не говорили этого, тогда это должен быть пакет, подобный процессу имя, вродеcom.company.app.services.MyService
источник
Любое имя, например
android:name
,android:process
должно быть в форме имени пакета: начинается сa..z
, объединяется с другими с.
, не заканчивается на.
...источник
android:process="com.my_pack.services.MyServiceProcess"
(com.my_pack.services - это пакет, в котором находится моя служба), и после этого ошибка установки не появится.Моя проблема заключалась в том, что я написал (обратите внимание на - vs. _):
<meta_data ... /> <!-- instead of --> <meta-data ... />
под действием. Это также может быть причиной вашей проблемы.
источник
Получил такую же ошибку! имел пустой тег разрешения, и это было причиной проблемы!
источник
Я столкнулся с той же проблемой после добавления локализаций
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package" android:versionCode="10" android:versionName="@string/version_name" >
Строка
@string/version_name
случайно попала в один из новых добавленных локализованных строковых файлов (появлялась только в новых файлах). После проверки всех локализаций и удаления@string/version_name
из каждого файла, кроме локали eng, все снова заработалоисточник
Прочтите журналы вашего устройства Android, чтобы диагностировать эту ошибку. Ожидайте появления строки «W / PackageParser», объясняющей проблему.
источник
<activity/>
должно быть определено ДО
<activity-alias/>
источник
У меня была эта ошибка, потому что код ниже
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*" android:host="*" android:scheme="content" /> </intent-filter>
Когда я перешел
android:mimeType="*"
наandroid:mimeType="*/*"
исправление этой ошибки.источник
Имя папки, созданной для деятельности, должно быть маленькими буквами, не используйте заглавные буквы для имени папки ... всегда лучше использовать маленькие буквы.
источник
это может быть по многим причинам, но для меня это было решено путем изменения имени пакета на имя в нижнем регистре (имя пакета было «Действия», решенное с помощью действий).
источник
Если вы используете multidex в манифесте, тогда к нему следует добавить значение или ресурс. Подобно..
<meta-data android:name="android.support.multidex.MultiDexApplication" android:value="@string/yourValue" />
ИЛИ
<meta-data android:name="android.support.multidex.MultiDexApplication" android:resource="@string/yourValue" />
затем очистите проект и переустановите приложение.
источник
В моем случае я имел в виду значок с таким атрибутом:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="?attr/ic_notify" />
вместо вытягиваемого:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notify" />
Я использую этот атрибут в нескольких местах, но, похоже, он не работает в манифесте.
источник
Я создаю новое приложение и настраиваю его на Android Pie . Все работало хорошо, тогда в последнее время я обнаружил, что мое приложение не устанавливается на Android Naught и ниже. ОС Android.
Во время установки я вижу сообщение об ошибке
Итак, какие исправления, которые я сделал, следующие, и все они должны быть выполнены
AndroidManifest.xml
только в файле.Для активности, услуги, получателя и всего
Instead of: android:name=".service.MyService" Used: android:name="com.complete.appicationID.service.MyService"
Для разрешений манифеста
Instead of: <uses-permission android:name="{applicationId}.permission.MAPS_RECEIVE" /> <permission android:name="{applicationId}.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> Used: <uses-permission android:name="com.complete.appicationID.permission.MAPS_RECEIVE" /> <permission android:name="com.complete.appicationID.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
Это были все изменения, которые мне пришлось внести, чтобы он работал и на устройствах с более ранними версиями.
источник
Target
<activity>
должно быть указано до<activity-alias>
того .источник
Могут быть и другие файлы, которые имеют неправильный формат, но не выделены в среде IDE, например, res / values / strings, на которые манифест может ссылаться для таких вещей, как метки.
источник
В моем случае причиной было отсутствие атрибута android: name в <activity-alias>. Это обязательно для <activity-alias>, но не должно указывать имя существующего класса. Забавно - проект компилируется без проблем.
источник
Моя проблема заключалась в следующем:
Я указывал свои разрешения следующим образом, и это не сработало.
<permission android:name="android.permission.INTERNET"> <meta-data /> </permission> <permission android:name="android.permission.ACCESS_NETWORK_STATE"> <meta-data /> </permission>
Он работал нормально, когда я изменил его следующим образом:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
источник
У меня была эта ошибка, потому что у меня была строка ниже.
android:protectionLevel="developer"
После того, как я изменил его на
android:protectionLevel="signature"
проблема была решена
источник
После борьбы с этой проблемой я обнаружил, что все значения, которые используются в качестве значения строкового ресурса (также известного как @ string /) в манифестах (библиотек, которые вы тоже используете), не могут быть частью strings.xml локализаций. . Пример: если ваш файл манифеста использует @ string / app_name, определение string / app_name разрешено только в ваших значениях по умолчанию / strings.xml, а не в альтернативном файле string.xml, который вы предоставляете для локализаций. Надеюсь, это поможет..
источник
У меня была такая же ошибка. у меня не было прописных букв в имени моего пакета / приложения, и очистить проект, и другие решения также мне не помогли. в конце концов, я создал новый проект и скопировал мои материалы в новый, шаг за шагом, и проверил, не возникает ли проблема. в конце концов, у меня был хороший и безошибочный проект без всякой избыточности. Иногда бывает трудно найти источник этой ошибки, поэтому проще выбрать другой подход.
Надеюсь, это кому-нибудь поможет!
источник
Я столкнулся с этой ошибкой, когда поместил класс Application в неправильный пакет!
источник
Вероятно, вы не соблюдали правила синтаксиса тега. например:
<meta-data android:name="preloaded_fonts"/>
Этот тег является неполным и вызывает эту ошибку.
Обзор манифеста приложения
источник
Использование
android:resource
в<meta-data>
вместоandroid:src
иandroid:srcCompat
источник
Я знаю, что здесь поздно отвечать, но я делаю странную ошибку, поэтому отправьте свой ответ, если он кому-то поможет. В моем случае по ошибке я добавил основную активность запуска как псевдоним
<activity-alias android:name=".activities.SplashActivity" android:targetActivity=".activities.SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity-alias>
Итак, когда я пытаюсь запустить свое приложение, появляется ошибка
Ошибка при установке APK
Я просто удаляю слово «-alias» из регистрации активности, и мое приложение успешно запускается.
источник