我正在开发一个小应用程序,其中列出了 android 设备上存在/安装的所有应用程序。但是当我尝试运行代码时出现以下错误。
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请任何人都可以帮我解决这个错误。
我正在开发一个小应用程序,其中列出了 android 设备上存在/安装的所有应用程序。但是当我尝试运行代码时出现以下错误。
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请任何人都可以帮我解决这个错误。
此错误可能还有另一个原因。属性
android:taskAffinity="string"
应始终以点开头,例如:
android:taskAffinity=".string"
活动名称应以“.”为前缀 在您的清单文件中。
我遇到了这个错误,因为我的包名中有这样的大写字母
Com.Example.packagename
在我把它改成类似的东西之后
com.example.packagename
解决了
当 PackageParser.java 在 manifest.xml 文件中检测到任何大量错误时,会返回 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误代码。
要隔离错误,请查看 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 抱怨 manifest.xml 文件的第 #214 行"<provider> doesn't include authority attribute"。请参阅下面的 PackageParser 中返回该错误代码的所有情况的列表。(PackageParser 是唯一产生 PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误代码的类)
在我的情况下,消息“<provider> 不包括权限属性”是由 parseApplication 调用的 parseProvider 函数中 PackagerParser.java 的第 2490 行产生的。
从 frameworks/base/core/java/android/content/pm/PackageParser.java 的 4.1.1 版本开始,在这些方法的这些行中引用了 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 和源代码中四处寻找导致问题的原因。
我有同样的问题,但是当我这样调用进程时:
<service
android:name="com.dexode.tama.AppService"
android:process="screen" >
</service>
当我更改为:
<service
android:name="com.dexode.tama.AppService"
android:process=":screen" >
</service>
一切都开始工作。
检查清单文件中的活动名称
或主要活动/类中的包名称
<activity android:name="MainActivity"></activity>
我前段时间遇到了同样的问题,在android文档中,他们说如果你不使用“:”作为前缀,android:process
你应该使用小写字母,但他们从来没有这么说,那么它应该是一个类似进程的包名字,比如com.company.app.services.MyService
任何名称如android:name
,android:process
都应采用包名的形式:以 开头a..z
,与其他以 结合.
,不要以.
...结尾
我的问题是我写过(注意 - 与 _ ):
<meta_data ... />
<!-- instead of -->
<meta-data ... />
在一个活动下。这也可能是您的问题的原因。
阅读您的 Android 设备日志以诊断此错误。期待一个解释问题的“W/PackageParser”行。
我有这个错误,因为下面的代码
<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="*/*"
修复此错误时。
就我而言,我指的是使用如下属性的图标:
<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 12 或 Android S 中的某人(对我不起作用)[您可以检查使 targetSdkVersion "S" 到 targetSdkVersion 30 它会正常工作]。为此,为了工作,我们需要将所有依赖项更新到最新的依赖项,并且必须添加 -
android:exported="true"
到任何在应用程序的 AndroidManifest.xml 文件中声明了意图过滤器的活动、活动别名、服务或接收器组件。因为在 Android 12中几乎没有改变行为。
得到同样的错误!有空的权限标签,这导致了问题!
<activity/>
必须在之前定义
<activity-alias/>
添加本地化后我遇到了同样的问题
<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 locale 之外的每个文件中删除后,一切都恢复正常
这可能有很多原因,但对我来说,它是通过用小写名称更改包名称来解决的(包名称是活动,用活动解决)。
活动创建的名称文件夹必须是小写字母,活动文件夹名称不要使用大写字母....使用小写字母总是更好。
我创建了一个新应用程序并将其定位到Android Pie。一切都运行良好,然后最近我发现我的应用程序没有安装到Android Naught 和低于Android OS 的版本。
安装时,我看到失败消息
安装失败并显示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 消息。
所以我所做的修复如下,它们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" />
这是我必须执行的所有更改才能使其也适用于较低版本的设备。
如果您在清单中使用 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>
需要在<activity-alias>
. _
在我的情况下,原因是 <activity-alias> 中没有 android:name 属性。<activity-alias> 是强制性的,尽管它不能命名现有的类。有趣的是 - 项目编译没有问题。
可能还有其他格式错误但未在 IDE 中突出显示的文件,例如清单可能为标签等内容引用的 res/values/strings。
在解决了这个问题之后,我发现所有在清单(您也在使用的库中)中用作字符串资源值(又名@string/)的值都不允许成为本地化的 strings.xml 的一部分. 示例:如果您的清单文件使用 @string/app_name,则 string/app_name 的定义仅允许在您的默认值/strings.xml 中,而不是在您为本地化提供的备用 string.xml 文件中。我希望这有帮助..
我遇到了这个错误,因为我有下面的行。
android:protectionLevel="developer"
在我将其更改为
android:protectionLevel="signature"
问题已解决
我的问题如下:
我以以下方式指定我的权限,但它不起作用。
<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" />
我有同样的错误。我的包/应用程序名称中没有大写字符,清理项目和其他解决方案也没有帮助我。毕竟我创建了新项目并将我的东西一步一步复制到新项目中,并检查是否出现问题。毕竟我有一个没有任何冗余的漂亮且无错误的项目。有时很难找到此错误的来源,因此采用另一种方法更容易。
我希望这对某人有帮助!
我知道在这里回答已经很晚了,但是我犯了一个奇怪的错误,所以如果它对某人有帮助,请发布我的答案,在我的情况下,我错误地将主启动器活动添加为别名
<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 时出错
失败 [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]
我只是从活动注册中删除“-alias”字样,我的应用程序成功启动。
使用android:resource
in<meta-data>
代替android:src
andandroid:srcCompat
当我将 Application 类放在错误的包中时,我遇到了这个错误!
就我而言,原因是:
android:resource="@color/app_green"
我遇到了这个错误,因为我的包名中有这样的大写字母。
com.App.videoeditor
//到 com.app.videoeditor
就我而言,这是由于这条线:
<application
android:cantSaveState="true"
我将不胜感激任何评论为什么android:cantSaveState
不能被 Android 11 识别。谢谢!
如果任何人在运行 androidTest 时遇到同样的问题。请遵循这个
请注意:androidTest install_parse_failed_manifest_malformed 相关问题。可以应用此解决方案
无法安装应用程序:install_parse_failed_manifest_malformed
解决方案
依赖页面链接:
https://developer.android.com/jetpack/androidx/releases/test
今天我在测试一个项目时发现了同样的问题,但是线程中提供的解决方案都不起作用,我会发布我的解决方案以防有人尝试类似的东西。
我的错误是包含连字符的包名称(例如“my -home”),并且在 taskAffinity 中翻译的内容类似于(“com.skd.my-home”)导致错误。当我删除连字符并设置下划线之类的另一个有效字符时,我的代码可以正常工作并安装在我的设备中。
在我的情况下,我删除了<action android:name="android.intent.action.MAIN" />
添加它的行让应用程序运行
<queries>
<!-- Intent filter signatures that you are going to query: -->
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent>
</queries>
我有同样的问题。我通过删除最后一个包含的plugin.LocalNotification
nuget 找到了解决方案,它确实解决了