web-dev-qa-db-fra.com

Comment réparer INSTALL_PARSE_FAILED_MANIFEST_MALFORMED dans mon application Android

Bonjour, j'essaie d'expérimenter avec gcm mais je ne parviens pas à le faire fonctionner. Je ne sais pas où je m'en mêle, voici l'erreur que j'obtiens. J'essaie de déployer mon application directement sur le périphérique et de déboguer à partir de là, mais chaque fois que j'essaie de le déployer, cette erreur se produit

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>

Mon appareil est HTC OneX

  • Version Android: 4.03
  • HTC Sense Version: 4.0
  • Numéro de logiciel: 1.29.110.11
  • API HTC SDK Niveau: 4.12
  • Version de l'extension HTC: HTCExtension_403_1_GA_7

S'il vous plaît guider comme je suis nouveau poisson dans Android Sea.

Edit-1: J'ai remarqué que si je commente cette ligne ci-dessous, l'application est déployée et exécutée, mais je ne peux évidemment pas avancer sans la permission mentionnée ci-dessous ... aidez-moi s'il vous plaît ....

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

Changer le paquet de noms avec des lettres majuscules en petites lettres.

54
imperator_sp

Changer votre

Android:name="MainActivity"

&AGRAVE;

Android:name=".MainActivity"

OU ajoute le nom complet du paquet en minuscule avant le nom de votre classe

Android:name="thepackage.MainActivity"

Changez tous les attributs nommés Android:name dans les balises activity comme je l’ai suggéré.

8
Vishnuvathsan

Au lieu de:

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

à:

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

Essayez ça.

4
Jason Cidras
<activity Android:name="MainActivity"

devrait être formé comme

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

pour ce faire sans erreurs, accédez au package (clic droit)> Outils Android> renommer le package d'application

3
user1833400

essayez d'écrire le nom de l'activité suivi de "." Au lieu de

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

utilisation

<activity Android:name=".MainActivity"
                  Android:label="@string/app_name">
1
Vinay Rathod

J'ai rencontré ce même problème dans le studio Android

ce qui résout cela est de laisser le domaine d’entreprise être composé uniquement de petites lettres

1
amr osama

Il y a un problème à ce sujet: http://code.google.com/p/Android/issues/detail?id=37658 Les lettres majuscules ne peuvent pas être utilisées dans les noms de package dans les autorisations. Vous êtes (comme moi) dans une situation difficile lorsque vous avez déployé une application avec un nom de paquet comme celui-ci et que vous devez utiliser GCM .J'ai essayé d'utiliser une sorte de permission abrégée:

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

J'ai aussi défini le service de la même manière. Il devait être dans le package d'application . Cela a fonctionné sur Android 4.3. Probablement sur 4.2 également. Je sais que sur 4.0.3 ce n'était pas le cas.

0
Ivo Pavlik

assurez-vous que le nom de votre colis est en lettres minuscules ...... a fonctionné pour moi

0
Hadis

Dans mon cas, le nom du paquet n'a été mentionné qu'en lettres minuscules. Mais pour quelques activités, je l’ai nommée avec le nom partiel i.e Android:name=".ContactUs". Après je l'ai résolu en préfixant le nom complet du paquet avant tous les noms d'activité, de service et de fournisseur de diffusion dans le fichier manifeste.

Code de travail

<?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>

0
Raghuram db

écrivez le nom du paquet Java et le nom de tous les dossiers en minuscule, cela fonctionnera bien ...

0
Abhi