Невозможно прочитать имя пакета из AndroidManifest.xml
У меня есть ошибки в файле манифеста Android:
Error:Cannot read packageName from C:\Users\brandon\AndroidStudioProjects\MineDodge2\app\src\main\AndroidManifest.xml
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>