安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?
我正在开发一个小应用程序,列出所有的应用程序目前/安装在Android设备上。 但是我正在尝试运行代码时遇到下面的错误。
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请任何人帮我解决这个错误。
活动名称应该以“。”作为前缀。 在你的清单文件中。
这个错误可能是另一个原因。 属性
android:taskAffinity="string"
应始终以点开始,如:
android:taskAffinity=".string"
我有这个错误,因为我的包名中有大写字母
Com.Example.packagename
在我改变了它之后
com.example.packagename
它被解决了
当它检测到manifest.xml文件中有大量错误时,PackageParser.java将返回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文件“<provider>的第214行不包含权限属性” 。 请参阅PackageParser中所有情况下的列表,返回错误代码。 (PackageParser是生成PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误代码的唯一类)
在我的情况下,消息“<provider>不包含权限属性”是由parseApplication调用的parseProvider函数中的PackagerParser.java的第2490行产生的。
从4.1.1版本的frameworks / base / core / java / android / content / pm / PackageParser.java,PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED在这些方法的这些行中被引用。 如果源代码的行号后面跟着一个带有引号的string,这是在logcat中打印的消息。 如果行号后跟一个Javaexpression式,该expression式是导致返回错误代码的代码,应调查该函数以查看导致错误消息返回的原因。 在一些情况下,我无法将错误原因分离到一个特定的方法调用。
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和源头上找出是什么原因造成问题。
在清单文件中检查您的活动名称
或主要活动/课程中的包名称
<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
都应该以包名的forms:以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@string/version_name
意外地传入新添加的本地化string文件之一(它只出现在新文件中)。 检查完所有的本地化后,除了eng locale以外的每个文件中删除@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。
在我的情况下,原因是在<activity-alias>中缺lessandroid:name属性。 对于<activity-alias>是必须的,尽pipe它不能命名现有的类。 有趣的是 – 项目编译没有问题。
我的问题如下:
我以下面的方式指定了我的权限,并且不能正常工作。
<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资源值(aka @ string /)使用的值都不允许成为本地化string的一部分。 示例:如果您的清单文件使用@ string / app_name,则string/ app_name的定义仅在默认值/ strings.xml中允许,而不在您为本地化提供的备用string.xml文件中。 我希望帮助..
我有同样的错误。 我的软件包/应用程序名称中没有大写字母,并且清理项目,其他解决scheme也没有帮助我。 毕竟我创build了新的项目,并将我的东西一步一步地复制到新的项目中,并检查问题是否会popup。 毕竟,我有一个很好的,没有错误的项目没有任何冗余。 有时很难find这个错误的来源,所以采取另一种方法更容易。
我希望这可以帮助别人!
当我把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" />
我在几个地方使用这个属性,但它似乎不工作在清单。
活动创build的名称文件夹必须是小写字母,不要使用大写字母作为活动文件夹名称….它总是最好使用小写字母。