失败 INSTALL PARSE FAILED MANIFEST MALFORMED
Failure INSTALL PARSE FAILED MANIFEST MALFORMED
我在安装应用程序时遇到一个奇怪的问题。
当我编译我的项目时没有错误,但是当我尝试启动它时显示,
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
错误。
我已经尝试了很多与安装错误相关的事情:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误并且也遵循了该规则但是出了点问题。
<manifest
android:hardwareAccelerated="true"
android:versionCode="1"
android:versionName="0.0.1"
package="Work.Work"
xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:supportsRtl="true">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/activity_name"
android:launchMode="singleTop"
android:name="MainActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:exported="true"
android:name="com.plugin.gcm.PushHandlerActivity" />
<receiver
android:name="com.plugin.gcm.CordovaGCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="Work.Work" />
</intent-filter>
</receiver>
<service android:name="com.plugin.gcm.GCMIntentService" />
<activity
android:exported="true"
android:name="com.adobe.phonegap.push.PushHandlerActivity" />
<receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" />
<receiver
android:exported="true"
android:name="com.google.android.gms.gcm.GcmReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.GCMIntentService">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.RegistrationIntentService" />
</application>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission
android:name="Work.Work.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!--<uses-permission android:name="Work.Work.permission.C2D_MESSAGE" />-->
<!--<uses-permission android:maxSdkVersion="18" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!--<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />-->
package="Work"
APK 清单 package
名称必须至少包含一个 .
分隔符。例如:
package="work.work"
您可以阅读 PackageParser
source 了解安装失败的各种方式 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
。
我遇到这个错误是因为我的包裹名称中有这样的大写字母。
Com.Droider.packagename;
在我将其更改为类似内容之后:
com.droider.packagename;
在你的情况下尝试将其更改为:
work.work;
编辑 1:
May be this causes also.
android:name="MainActivity"
Change this to.
android:name=".MainActivity"
只需检查所有
android:name="..."
在你的清单中,看看你是否忘记在一个应该有它的名字的开头加上一个点,主要是你的 类.
的名字
以我为例
如果您已将 activity 更改为 fragment
然后从您的 androidmanifest.xml 文件中删除 activity 名称
<activity
android:name=".fragment_change_password"
android:screenOrientation="portrait" />
从清单文件中删除此类行
您的包裹名称中有一个大写字母。尝试重构您的包,使所有字母均为小写。为此,请在您的项目面板中,确保您处于 Android 视图模式,然后单击视图指示器右侧的齿轮,然后确保未选中紧凑的空中间包.接下来,右键单击带有大写字母的包,然后 select refactor -> rename。将其更改为小写,仔细检查您的 AndroidManifest.xml 现在是小写,如果不是,请手动编辑它。
在我的例子中,我在 android:process
的值上加上了 ':'
<service
android:name=".Views.Views.services.MyService"
android:process=":remote" />
对我有用
我遇到了同样的问题。 我创建了一个以大写字母开头的新包。它会导致同样的问题。检查您的所有包文件夹名称并确保全部使用小写字母。
编码愉快
清单文件中的元数据标记将可用于每个 xml 资源文件。
如果该元数据没有 android:resource 位置,则会出现此问题。
示例:
<meta-data android:name="com.google.android.actions"
android:resource="@drawable/cellphone"/>
在我的案例中,我将 Application class 放置在主包文件夹之外。
只需将应用程序 class 移动到根活动文件夹。
可能会导致 Android 12。为此
在你的Activity中添加exported = true
示例:
<activity
android:exported="true" />
我在安装应用程序时遇到一个奇怪的问题。
当我编译我的项目时没有错误,但是当我尝试启动它时显示,
安装错误:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
错误。
我已经尝试了很多与安装错误相关的事情:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误并且也遵循了该规则但是出了点问题。
<manifest
android:hardwareAccelerated="true"
android:versionCode="1"
android:versionName="0.0.1"
package="Work.Work"
xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:supportsRtl="true">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:label="@string/activity_name"
android:launchMode="singleTop"
android:name="MainActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:exported="true"
android:name="com.plugin.gcm.PushHandlerActivity" />
<receiver
android:name="com.plugin.gcm.CordovaGCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="Work.Work" />
</intent-filter>
</receiver>
<service android:name="com.plugin.gcm.GCMIntentService" />
<activity
android:exported="true"
android:name="com.adobe.phonegap.push.PushHandlerActivity" />
<receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" />
<receiver
android:exported="true"
android:name="com.google.android.gms.gcm.GcmReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.GCMIntentService">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:exported="false"
android:name="com.adobe.phonegap.push.RegistrationIntentService" />
</application>
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission
android:name="Work.Work.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!--<uses-permission android:name="Work.Work.permission.C2D_MESSAGE" />-->
<!--<uses-permission android:maxSdkVersion="18" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!--<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />-->
package="Work"
APK 清单 package
名称必须至少包含一个 .
分隔符。例如:
package="work.work"
您可以阅读 PackageParser
source 了解安装失败的各种方式 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
。
我遇到这个错误是因为我的包裹名称中有这样的大写字母。
Com.Droider.packagename;
在我将其更改为类似内容之后:
com.droider.packagename;
在你的情况下尝试将其更改为:
work.work;
编辑 1:
May be this causes also.
android:name="MainActivity"
Change this to.
android:name=".MainActivity"
只需检查所有
android:name="..."
在你的清单中,看看你是否忘记在一个应该有它的名字的开头加上一个点,主要是你的 类.
的名字以我为例 如果您已将 activity 更改为 fragment 然后从您的 androidmanifest.xml 文件中删除 activity 名称
<activity
android:name=".fragment_change_password"
android:screenOrientation="portrait" />
从清单文件中删除此类行
您的包裹名称中有一个大写字母。尝试重构您的包,使所有字母均为小写。为此,请在您的项目面板中,确保您处于 Android 视图模式,然后单击视图指示器右侧的齿轮,然后确保未选中紧凑的空中间包.接下来,右键单击带有大写字母的包,然后 select refactor -> rename。将其更改为小写,仔细检查您的 AndroidManifest.xml 现在是小写,如果不是,请手动编辑它。
在我的例子中,我在 android:process
的值上加上了 ':'<service
android:name=".Views.Views.services.MyService"
android:process=":remote" />
对我有用
我遇到了同样的问题。 我创建了一个以大写字母开头的新包。它会导致同样的问题。检查您的所有包文件夹名称并确保全部使用小写字母。
编码愉快
清单文件中的元数据标记将可用于每个 xml 资源文件。 如果该元数据没有 android:resource 位置,则会出现此问题。
示例:
<meta-data android:name="com.google.android.actions"
android:resource="@drawable/cellphone"/>
在我的案例中,我将 Application class 放置在主包文件夹之外。
只需将应用程序 class 移动到根活动文件夹。
可能会导致 Android 12。为此
在你的Activity中添加exported = true
示例:
<activity
android:exported="true" />