我正在开发一个小应用程序,其中列出了android设备上存在/安装的所有应用程序。但是当我试图运行代码时,我得到了下面的错误。安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请任何一个可以帮助我弄清楚这个错误。
我正在开发一个小应用程序,其中列出了android设备上存在/安装的所有应用程序。但是当我试图运行代码时,我得到了下面的错误。安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED?
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请任何一个可以帮助我弄清楚这个错误。
清单文件
或主要活动包名/类
<activity android:name="MainActivity"></activity>
任何名称,如android:name
,android:process
应在包名的形式:与a..z
开始,与他人结合.
,不.
结束...
@IgorG。对不起,我失去了我的观点:-(但新的SDK删除了该字段([here](http://developer.android.com/sdk/api_diff/4/changes/android.content.pm.PackageManager.html))。 – 2012-05-06 02:08:57
谢谢,我调用了一个这样的过程:'android:process =“com.my_pack.services.MyServiceProcess”'(com.my_pack.services是我的服务所在的包)并且安装错误不会显示 – 2013-02-01 06:21:36
我的问题是,我写了(注 - 对 - _):
<meta_data ... />
<!-- instead of -->
<meta-data ... />
下的活动。这也可能是你的问题的原因。
可能还有这个错误的另一个原因。属性
android:taskAffinity="string"
应始终以点开始,如:
android:taskAffinity=".string"
问题已解决,但我在哪里可以在文档中找到这些信息? 这里没有关于DOT的信息:https://developer.android.com/guide/topics/manifest/activity-element.html#aff – 2016-05-19 13:07:46
为我工作,但这是一个bug的地狱=/ – 2017-06-01 21:13:24
我加入本地化
<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
后再次合作
我是有这个错误,因为我在我的包的名称有大写字母这样
Com.Example.packagename
我已经改变后,为类似
com.example.packagename
它解决了
这解决了我的问题我的活动类是在一个包所谓的活动,一个d我将它添加到清单出现此错误之前。当我将活动包名称更改为活动时,它解决了。谢谢 – alicanbatur 2013-11-26 11:38:09
我认为你可以在包名中包含大写字母,但是包名中的第一个字母不能是大写字母。所以“myActivity”=好,但 “MyActivity”=不好 – Gene 2014-08-18 22:17:25
可能有其他的文件s的格式不正确,但在IDE中未突出显示,例如清单可能为标签等内容引用的res/values/strings。
在我的情况下,原因是< activity-alias>中没有android:name属性。 <活动别名是必须的,尽管它不能命名现有的类。有趣的是 - 项目编译没有问题。
我的问题如下:
我以下列方式确定我的权限,它不能正常工作。
<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设备日志来诊断此错误。期待一个解释问题的“W/PackageParser”行。
我有这个错误,因为我有下面的行。
android:protectionLevel="developer"
后,我把它改成
android:protectionLevel="signature"
问题得到解决
的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抱怨Manifest.xml文件的那条线#214 “<提供商>不包括当局属性” 。请参阅下面的PackageParser中所有情况下的列表,返回错误代码。 (PackageParser是产生PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误代码的唯一类)
在我的情况消息“<提供商>不包括当局属性”是通过在由parseApplication称为parseProvider函数PackagerParser.java的2490系产生。
从4.1.1版本框架/碱/核心/ JAVA /机器人/内容/ 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中找出问题并找出导致问题的原因。
感谢您帮助我们了解如何解决一般问题,除了提供特定的解决方案。 – 2015-10-06 11:14:34
这个例外有多种原因。这是最合乎逻辑的答案。 – 2015-11-12 06:14:14
谢谢 - 在我的情况下,我有一个我错过的IntentFilter.MalformedMimeTypeException。 – CzarMatt 2016-03-04 00:04:25
<activity/>
必须定义之前
<activity-alias/>
我希望我能再次对此表示赞赏。第二次这个答案对我有帮助 – cottonBallPaws 2015-11-19 16:09:02
我有同样的问题,但是当我打电话的过程是这样的:
<service
android:name="com.dexode.tama.AppService"
android:process="screen" >
</service>
当我更改为:
<service
android:name="com.dexode.tama.AppService"
android:process=":screen" >
</service>
一切开始工作。
通过添加':'你改变了代码的语义。在第二种情况下,应用程序将为该应用程序仅可用的服务创建新的进程。 http://developer.android.com/guide/topics/manifest/service-element.html#proc。 相反,错误可以通过提及完整的软件包名称而不是“屏幕”这个词来解决。 – shshnk 2015-10-15 08:19:03
在与这个问题挣扎之后,我发现所有在清单(您使用的库)中用作字符串资源值(aka @ string /)的值都不允许成为字符串的一部分.xml的本地化。 示例:如果您的清单文件使用@ string/app_name,那么string/app_name的定义只允许在您的默认值/ strings.xml中,而不是在您为本地化提供的替代string.xml文件中。 我希望帮助..
我有这个错误,因为下面
<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" />
OR
<meta-data android:name="android.support.multidex.MultiDexApplication"
android:resource="@string/yourValue" />
然后清理项目,并重新安装应用程序。
我有同样的错误。我的软件包/应用程序名称中没有大写字母,并且清理了项目,其他解决方案也没有帮助我。毕竟我创建了新项目,并将我的东西逐步复制到新的项目中,并检查问题是否会弹出。毕竟,我有一个没有任何冗余的好的,没有错误的项目。有时很难找到这个错误的来源,所以采取另一种方法更容易。
我希望这可以帮助别人!
当我把Application类放在错误的包中时,我遇到了这个错误!
<activity-alias>
目标<activity>
需要指定之前的别名。
在我来说,我指的是一个图标使用像这样的属性:
<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:资源不接受属性... – 2018-02-16 20:12:14
活动创建的名称文件夹必须是小写字母,不要使用大写字母作为活动文件夹名称....它总是最好使用小写字母。
manifest.xml文件中有很多错误会导致此错误代码,请参阅下面的PackageParser.java错误列表答案。 – Ribo 2014-09-03 13:54:40
您没有接受答案? – shieldgenerator7 2014-12-16 13:26:02
按照此链接您将得到您的答案 http://stackoverflow.com/questions/16015033/installation-error-install-parse-failed-manifest-malformed/27520216#27520216 – 2014-12-17 07:29:59