Невозможно прочитать имя пакета из AndroidManifest.xml

У меня есть ошибки в файле манифеста 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.

Я попытался посмотреть на этом сайте, но ответы не работают для меня.

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

Ответ 1

Если вы используете старую версию файла build.grade, вы должны удалить этот код:

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

Затем Build> Чистый проект

Примечание: если вы видите этот код, вы используете старую версию

Ответ 2

Ошибка очень проста, и я довольно разочарован сообществом стека, чтобы не найти ее до сих пор.

< manifest ...

должен стать

<manifest...

В принципе, удалите лишнее пространство. Что вызывает следующую ошибку:

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

Кроме того, фильтр намерения, используемый для MainActivity, также должен использоваться для второго действия.

Надеемся, что эта проблема решена.

Ответ 3

Я получил эту ошибку на Unity 2018, и я думаю, что это ошибка.

Исправление для меня: добавить имя пакета в Android Manifest в проекте Unity.

В моем проекте путь к манифесту: Assets/Plugins/Android/AndroidManifest.xml

Например, я получил ошибку, когда мой файл манифеста выглядит так:

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

Он сгенерирован плагином Oculus Gear VR от Unity. Но оно пропустило имя пакета и должно выглядеть так:

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

Замените YOURPACKAGENAME на Package Name вашего проекта. Он должен быть в меню "Правка" → "Настройки проекта" → "Плеер" → "Другие настройки" → "Идентификация" → "Имя пакета" и должен выглядеть как com.YOURORGANIZATION.APPNAME.

Некоторые народы писали, что манифест должен выглядеть так:

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

И они написали, что Unity заменит ${applicationId} в имени пакета при сборке приложения для Android, но в моем Unity 2018.1.6f1 это не работает, и я думаю, что это тоже ошибка.

Ответ 4

Ваш второй <action android:name="android.intent.action.MAIN" /> и           <category android:name="android.intent.category.LAUNCHER" /> здесь запрещены. я думаю `   < 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>

` Это будет нормально.

Ответ 5

почему вы упомянули <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> дважды? Удалите любой из этих двух.

Ответ 6

У меня это было в проекте с несколькими подпроектами, вызванном подпроектом, не соответствующим предложению configure( в верхнем уровне build.gradle.

В частности, я имел

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

который не соответствует моему новому подпроекту под названием pachymen. Но процесс сборки Gradle не выдал предупреждения (что я видел) и вместо этого дал ошибку "Cannot read packageName from AndroidManifest.xml" для подпроекта pachymen.

Ответ 7

Это просто потому, что вы либо скопировали уже существующий проект, либо его файлы в свой недавно созданный проект. Таким образом, конфликт манифеста. Поскольку копия манифеста принадлежит другому проекту и его путям.

вам нужно воссоздать файл манифеста в вашем собственном пути к файлу проекта и, возможно, вручную скопировать другой код манифеста проекта в ваш вновь созданный файл манифеста.

Ответ 8

В ответ на Эльдара Курбанова, который имел эту ошибку в Unity и всех, кто находит этот вопрос после ошибки при сборке с gradle в Unity.

Это не "ошибка" Unity 2018 и не причина того, что чего-то не хватает в предварительной сборке Manifest. Это на самом деле вызвано тем, что в файле mainTemplate.gradle отсутствует строка:

applicationId '**APPLICATION**'

Внутри блока defaultConfig {} раздела android {}. Это обеспечит вставку в сгенерированный манифест имени пакета.

Да, ручная вставка имени пакета в основной манифест будет работать, но гораздо лучше просто использовать настройки проекта Unity для установки имени пакета, а не жестко его кодировать.

Если кто-то еще найдет этот вопрос и использует Unity, то вот пример mainTemplate.gradle, который вы можете использовать для ссылок: https://pastebin.com/hPs0uvkZ

Ответ 9

Моя проблема заключалась в том, что я пытался преобразовать старый проект Eclipse в проект Android Studio, где файл манифеста должен находиться в другом месте (вместе с другими файлами). Конкретно проект\app\src\main

Ответ 10

В моем случае папка src отсутствовала, поэтому я создал одну папку внутри приложения и внутри нее, в которой была создана еще одна основная папка, скопировав и вставив туда файл манифеста, и, наконец, синхронизировав с файлами Gradle, и он успешно скомпилировался.

Ответ 11

попробуйте это,

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

    <application
        android:icon="@drawable/launchicon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppBaseThemeTP">

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".Splash"
        android:screenOrientation="portrait"
        android:theme="@style/AppBaseThemeTP" >
    </activity>

    </application>
    </manifest>

Ответ 12

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

измените его на -

  <activity
        android:name="com.example.brandon.MineDodge.Splash" />
         <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</application>