我正在开发一个小型应用程序,其中列出了存在/已安装在android设备上的所有应用程序。但是我在尝试运行代码时遇到以下错误。
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请谁能帮助我解决此错误。
我正在开发一个小型应用程序,其中列出了存在/已安装在android设备上的所有应用程序。但是我在尝试运行代码时遇到以下错误。
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
请谁能帮助我解决此错误。
Answers:
此错误可能还有另一个原因。属性
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文件“ <provider>中的第214行不包括授权机构属性”。请参阅下面列出了返回该错误代码的PackageParser中所有情况的清单。(PackageParser是唯一产生PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误代码的类)
在我的情况下,PackagerParser.java的第2490行在parseApplication调用的parseProvider函数中生成了消息“ <provider>不包括授权机构属性”。
从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和源代码中四处摸索,才能找出导致问题的原因。
IntentFilter.MalformedMimeTypeException
,我错过了。
我有同样的问题,但是当我这样调用流程时:
<service
android:name="com.dexode.tama.AppService"
android:process="screen" >
</service>
当我更改为:
<service
android:name="com.dexode.tama.AppService"
android:process=":screen" >
</service>
一切开始工作。
任何名称,例如android:name
,android:process
都应以软件包名称的形式出现:以开头a..z
,以开头与其他内容组合.
,而不以.
... 结尾
android:process="com.my_pack.services.MyServiceProcess"
(com.my_pack.services是我的服务所在的软件包),此后将不会显示安装错误。
添加本地化后,我遇到了同样的问题
<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设备日志以诊断此错误。期望出现“ W / PackageParser”行来说明问题。
就我而言,我使用这样的属性来引用图标:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="?attr/ic_notify" />
而不是drawable:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notify" />
我在多个地方使用了此属性,但似乎在清单中不起作用。
我创建一个新应用程序并将其定位到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" />
这些都是我必须执行的所有更改,以使其也适用于较低版本的设备。
目标<activity>
需要指定之前的<activity-alias>
。
在我的情况下,原因是<activity-alias>中缺少android:name属性。尽管<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" />
我有同样的错误。我的程序包/应用程序名称中没有大写字母,并且清理项目,其他解决方案也没有帮助我。毕竟,我创建了一个新项目,并将我的东西一步一步地复制到新项目中,然后检查问题是否弹出。毕竟我有一个不错的,没有错误的项目,没有任何冗余。有时很难找到此错误的根源,因此更容易采用其他方法。
我希望这对某人有帮助!
当我将Application类放在错误的包中时,我遇到了这个错误!
使用android:resource
的<meta-data>
,而不是android:src
和android:srcCompat
我知道在这里回答已经很晚了,但我犯了一个奇怪的错误,所以如果有帮助,请发布我的答案,以我为例,我错误地添加了Main Launcher活动作为别名
<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”一词,然后我的应用程序成功启动。