How to fix INSTALL_PARSE_FAILED_MANIFEST_MALFORMED in my android application

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-28 02:07:06

问题


Hi I am trying to experiment with gcm but unable to make it work. Don't know where I am messing with it, below is the error I am getting. I am trying to deploy my application directly on device and debug from there but when ever I try to deploy it gives this error

Waiting for device.
Target device: HT24LW108632
Uploading file
    local path: D:\Data\Android\AndroidTest\out\production\AndroidTest\AndroidTest.apk
    remote path: /data/local/tmp/Android.Test
Installing Android.Test
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/Android.Test"
pkg: /data/local/tmp/Android.Test
Failure [INSTALL_PARSE_FAILED_MANIFEST_MALFORMED]

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="Android.Test"
          android:versionCode="1"
          android:versionName="1.0">
    <uses-sdk android:minSdkVersion="14"/>

    <permission
            android:name="Android.Test.permission.C2D_MESSAGE"
            android:protectionLevel="signature" />
    <uses-permission android:name="Android.Test.permission.C2D_MESSAGE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />



    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <receiver
                android:name="com.google.android.gcm.GCMBroadcastReceiver"
                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="Android.Test" />
            </intent-filter>
        </receiver>
        <service android:name=".GCMIntentService" />
    </application>
</manifest>

My Device is HTC OneX

  • Android Version: 4.03
  • HTC Sense Version: 4.0
  • Software number: 1.29.110.11
  • HTC SDK API Level: 4.12
  • HTC Extension version: HTCExtension_403_1_GA_7

Please guide as I am new fish in Android Sea.

Edit-1: I have noticed that if I comment this below line then application does deploy and execute but obviously I cant go forward without below mentioned permission ... please help....

<permission android:name="Android.Test.permission.C2D_MESSAGE"  android:protectionLevel="signature" />

回答1:


Change name package with Caps letters to little letters.




回答2:


Change your

android:name="MainActivity"

TO

android:name=".MainActivity"

OR add the fully qualified package name in lowercase before your class name

android:name="thepackage.MainActivity"

Do change all the attributes named as android:name inside the activity tags as I suggested.




回答3:


Instead of:

<permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>

to:

<uses-permission android:name="android.permission.C2D_MESSAGE" android:protectionLevel="signature"/>

Try that.




回答4:


<activity android:name="MainActivity"

should be formed like

<activity android:name="com.company.appname" 

to do this without errors go to package (right click) > android tools > rename app package




回答5:


try to write activity name follow by "." Instead of

<activity android:name="MainActivity"
                  android:label="@string/app_name">

use

<activity android:name=".MainActivity"
                  android:label="@string/app_name">



回答6:


I met this same issue in android studio

what solve this is to let company domain to be all small letters,




回答7:


There's issue about this: http://code.google.com/p/android/issues/detail?id=37658 Capital letters can't be used in package names within permissions. You got (same as me) into difficult situation when you have deployed application with package name like this and you need to use GCM. I tried to use some kind of short form of permission:

<permission android:name=".permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name=".permission.C2D_MESSAGE" />

I also defined service in the same way. It had to be in application package. It worked on Android 4.3. Probably on 4.2 also. I know that on 4.0.3 it didn't.




回答8:


make sure your package name is in small letters... worked for me




回答9:


write the java package name and all folders name in lowercase, it will work fine...




回答10:


In my case I was mentioned the package name in small letters only. But for few of the activities I named it with partial name i.e android:name=".ContactUs" . After I solved it by prefixing full package name before all the activity name, service name and broadcast provider name in Manifest file.

Working code

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="vcan.doit.com">

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.DesignDemo">
    <activity
        android:name="vcan.doit.com.LoginActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="vcan.doit.com.MainActivity"
        android:theme="@style/Theme.DesignDemo" />
    <activity
        android:name="vcan.doit.com.CheeseDetailActivity"
        android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="vcan.doit.com.MainActivity" />
    </activity>

    <service android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseMsgService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
    <service android:name="vcan.doit.com.PushNotification.MyAndroidFirebaseInstanceIdService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

    <activity
        android:name="vcan.doit.com.AboutUs"
        android:label="@string/abt_us"
        android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="vcan.doit.com.MainActivity" />
    </activity>
    <activity
        android:name="vcan.doit.com.ContactUs"
        android:label="@string/contact_us"
        android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="vcan.doit.com.MainActivity" />
    </activity>
    <activity android:name="vcan.doit.com.WriteToUs"
        android:label="@string/write_us"
        android:parentActivityName="vcan.doit.com.MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="vcan.doit.com.MainActivity" />
    </activity>
</application>




回答11:


I had this problem. My device memory was full. I solved my problem with freeing device memory.



来源:https://stackoverflow.com/questions/12396351/how-to-fix-install-parse-failed-manifest-malformed-in-my-android-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!