web-dev-qa-db-fra.com

Impossible de lire packageName à partir de AndroidManifest.xml

J'ai des erreurs dans mon fichier manifeste Android:

Error:Cannot read packageName from C:\Users\brandon\AndroidStudioProjects\MineDodge2\app\src\main\AndroidManifest.x‌​ml
Error:The markup in the document preceding the root element must be well-formed.

J'ai essayé de regarder sur ce site mais les réponses ne fonctionnent pas pour moi.

<?xml version="1.0" encoding="utf-8"?>
    < manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.example.brandon.MineDodge" >

    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/redjet"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
        <activity
            Android:name="com.example.brandon.MineDodge.MainActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            Android:name="com.example.brandon.MineDodge.Splash" />
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
    </application>
</manifest>
11
user4192325

Si vous utilisez une ancienne version de build.grade file, vous devez supprimer ce code:

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        Java.srcDirs = ['src']
        res.srcDirs = ['res']
    }
}

Ensuite, Build> Clean Project

16
SandroMarques

L'erreur est vraiment simple, et je suis plutôt déçu de la communauté des piles pour ne pas l'avoir trouvée jusqu'à présent. 

< manifest ...

devraient devenir 

<manifest...

En gros, supprimez cet espace supplémentaire. C'est ce qui cause l'erreur suivante:

Error:The markup in the document preceding the root element must be well-formed.

En outre, le filtre d'intention utilisé pour MainActivity doit également être utilisé pour la deuxième activité.

J'espère que ce problème est résolu. 

3
Prithviraj Prabhu

J'ai eu cette erreur sur Unity 2018 et je pense que c'est un bug.

Correction pour moi: Ajouter le nom de package au projet Android Manifest in Unity.

Dans mon chemin de projet pour manifester: Assets/Plugins/Android/AndroidManifest.xml

Par exemple, une erreur s'est produite lorsque mon fichier Manifest ressemble à ceci:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>

Il est généré par le plugin Oculus Gear VR de Unity. Mais il manque le nom du paquet et doit ressembler à ceci:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest package="YOURPACKAGENAME" xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>

Remplacez YOURPACKAGENAME par Nom du package de votre projet. Il devrait être dans Édition -> Paramètres du projet -> Lecteur -> Autres paramètres -> Identification -> Nom du paquet et devrait ressembler à com.YOURORGANIZATION.APPNAME

Certains peuples ont écrit, ce manifeste doit ressembler à ceci:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest package="${applicationId}" xmlns:Android="http://schemas.Android.com/apk/res/Android">
...
</manifest>

Et ils ont écrit que Unity remplacera ${applicationId} sur le nom du paquet lors de la création d'une application Android, mais dans mon Unity 2018.1.6f1, cela ne fonctionne pas et je pense que c'est aussi un bug. 

2
Eldar Kurbanov

Votre deuxième <action Android:name="Android.intent.action.MAIN" /> et <category Android:name="Android.intent.category.LAUNCHER" /> ne sont pas autorisés ici . Je pense ` <manifest xmlns: Android = "http://schemas.Android.com/apk/res/Android" package = "com.example.brandon.MineDodge">

<application
    Android:allowBackup="true"
    Android:icon="@mipmap/redjet"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="com.example.brandon.MineDodge.MainActivity"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity
        Android:name="com.example.brandon.MineDodge.Splash" />
</application>

` Ce sera OK.

0
Andy.Zhao

pourquoi avez-vous mentionné <action Android:name="Android.intent.action.MAIN" /> <category Android:name="Android.intent.category.LAUNCHER" /> deux fois? Retirez n'importe lequel de ces deux.

0
Raju-san

Mon problème était que j'essayais de convertir un ancien projet Eclipse en projet Android Studio dans lequel le fichier manifeste devait se trouver à un emplacement différent (avec d'autres fichiers). Spécifiquement projet\app\src\main

0
Jan Málek

En réponse à Eldar Kurbanov qui a eu cette erreur dans Unity & toute autre personne qui trouve cette question après avoir eu cette erreur lors de la construction avec gradle dans Unity.

Il ne s'agit pas d'un "bogue" d'Unity 2018 ni d'un élément manquant dans la pré-génération du manifeste. En fait, le fichier mainTemplate.gradle manque de la ligne:

applicationId '**APPLICATION**'

À l'intérieur du bloc defaultConfig {} de la section Android {}. Cela garantira que le manifeste généré contient le nom du paquet.

Oui, en insérant manuellement le nom du paquet dans le manifeste principal fonctionnera, mais il est préférable d'utiliser les paramètres de projet d'Unity pour définir le nom du paquet plutôt que de le coder en dur.

Si quelqu'un d'autre trouve cette question et utilise Unity, voici un exemple mainTemplate.gradle que vous pouvez utiliser pour le référencement: https://Pastebin.com/hPs0uvkZ

0
Sean McManus

C'est simplement parce que vous avez soit copié un projet existant et ses fichiers dans votre projet nouvellement créé. Provoquant ainsi un conflit manifeste. Parce que le manifeste copié appartient à l'autre projet et à ses chemins.

vous devez recréer un fichier manifeste dans votre propre chemin de fichier de projet et éventuellement copier manuellement le code de manifeste de l'autre projet dans le fichier manifeste que vous venez de créer.

0
sinopi

J'ai eu cela dans un projet multi-sous-projet, causé par le sous-projet ne correspondant pas à la clause configure( dans le build.gradle de niveau supérieur.

Plus précisément j'avais 

configure(subprojects.findAll { it.name.startsWith("pachymeninx") }) {

qui ne correspond pas à mon nouveau sous-projet appelé pachymen. Mais le processus de construction de Gradle n'a émis aucun avertissement (que j'ai vu) et a plutôt généré l'erreur "Cannot read packageName from AndroidManifest.xml" pour le sous-projet pachymen.

0
WillC