Intereting Posts
Подключение DVD-привода к устройству Android Мы можем использовать уже подготовленную базу данных SQLITE для приложения для телефонных разговоров? Как я могу получить доступ к файлу logcat на устройстве Android WebView: можно ли изменить хеш URL-адреса? JSch: как ssh на сервер с помощью ssh-keys Android NDK – Учебник / библиотеки OpenGL ES Включение поддержки SMS в Hangouts 2.0 приводит к перерыву BroadcastReceiver SMS_RECEIVED в моем приложении Текст кнопки не центрируется по вертикали в кнопке Как загрузить миниатюры Youtube в RecyclerView с использованием API Youtube Создайте версию apk с настройкой формата имени в Android Studio Как сделать 10-дюймовый планшетный компьютер совместимым с 7-дюймовым планшетом в Android Многофункциональное приложение, основанное на библиотеке с несколькими вкусами в Android Gradle WifiDirectActivity Изменение образца: Перенесите ArrayList <String> p2p Вызвано: java.lang.IllegalArgumentException: Плохой класс: класс java.lang.String Android набирает номер телефона программно

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

Я разрабатываю небольшое приложение, в котором перечислены все приложения, присутствующие / установленные на устройстве 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 «<поставщик> не включает атрибут полномочий» . См. Список ниже всех случаев в PackageParser, который возвращает этот код ошибки. (PackageParser – единственный класс, который создает код ошибки PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED)

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


Из 4.1.1-версии фреймворков / 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 

Прискорбно, что вам нужно совать в лог-кате и источник, чтобы выяснить, что вызывает проблему.

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

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

 <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:process вы должны использовать строчную букву, но они никогда не говорили об этом, тогда это должно быть Пакет как имя процесса, например com.company.app.services.MyService

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

Моя проблема была в том, что я написал (обратите внимание на – против _):

 <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 из каждого файла, кроме русского языка, все снова работало

 <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="*/*" исправил эту ошибку.

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

Если вы используете 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" /> 

Затем очистите проект и переустановите приложение.

<activity-alias> target <activity> должен быть указан перед псевдонимом.

Могут быть другие файлы, которые были искажены, но не выделены в среде 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" 

Проблема решена

После борьбы с этой проблемой я узнал, что все значения, которые используются как значение строкового ресурса (aka @ string /) в манифестах (из библиотек, которые вы используете), не могут быть частью strings.xml локализаций , Пример: если файл манифеста с использованием @ string / app_name, определение string / app_name разрешено только в ваших значениях по умолчанию / strings.xml, а не в альтернативном файле string.xml, который вы предоставляете для локализации. Надеюсь, это поможет..

У меня была такая же ошибка. У меня не было символа верхнего регистра в моем названии пакета / приложения и очистка проекта, а другие решения также не помогли мне. Ведь я создал новый проект и копировал свои материалы на новый шаг за шагом и проверял, всплывает ли проблема. В конце концов, у меня был хороший проект без ошибок без какой-либо избыточности. Иногда трудно найти источник этой ошибки, поэтому проще воспользоваться другим подходом.

Надеюсь, это поможет кому-то!

Я столкнулся с этой ошибкой, когда я включил класс Application в неправильный пакет!

В моем случае я имел в виду значок с таким атрибутом:

 <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" /> 

Я использую этот атрибут в нескольких местах, но кажется, что он не работает в манифесте.

Активная папка с именами имен должна быть маленькими буквами, не используйте заглавные буквы для имени папки активности … ее всегда лучше использовать маленькие буквы.