繁体   English   中英

无法从 AndroidManifest.xml 读取 packageName

[英]Cannot read packageName from 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>

如果您使用的是旧版本的build.grade文件,您应该删除以下代码:

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

然后,构建>清理项目

注意:如果您看到此代码,则您使用的是旧版本

这个错误真的很简单,我对堆栈社区直到现在还没有发现它感到非常失望。

< manifest ...

应该成为

<manifest...

基本上,删除多余的空间。 这就是导致以下错误的原因:

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

此外,用于 MainActivity 的意图过滤器也必须类似地用于第二个活动。

希望这个问题得到解决。

我在 Unity 2018 上遇到了这个错误,我认为这是一个错误。

为我修复:在 Unity 项目中将 packagename 添加到 Android Manifest。

在我的项目清单路径中: 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>

它由 Unity 的 Oculus Gear VR 插件生成。 但它错过了包名,必须是这样的:

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

将 YOURPACKAGENAME 替换为项目的包名称。 它应该在 Edit -> Project Settings -> Player -> Other Settings -> Identification -> 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>

他们写道,在构建 android 应用程序时,Unity 将替换包名称上的${applicationId} ,但在我的 Unity 2018.1.6f1 中它不起作用,我认为这也是一个错误。

我的问题是我试图将一个旧的 Eclipse 项目转换为 Android Studio 项目,其中清单文件预计位于不同的位置(以及其他文件)。 特别是project\\app\\src\\main

回应在 Unity 中出现此错误的Eldar Kurbanov以及在 Unity 中使用 gradle 构建时出现错误后发现此问题的任何其他人。

这不是 Unity 2018 的“错误”,也不是由清单预构建中缺少某些内容引起的。 它实际上是由 mainTemplate.gradle 文件缺少该行引起的:

applicationId '**APPLICATION**'

android {}部分的defaultConfig {}块内。 这将确保生成的清单中插入了包名称。

是的,手动将包名插入到主清单中是可行的,但最好使用 Unity 的项目设置来设置包名,而不是对其进行硬编码。

如果其他人发现这个问题并且他们正在使用 Unity,那么这里有一个 mainTemplate.gradle 示例,您可以用于参考: https : //pastebin.com/hPs0uvkZ

您的第二个<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>

` 没问题。

为什么你提到<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />两次? 从这两个中删除任何一个。

我在一个多子项目项目中遇到了这个,这是由于子项目与顶级build.gradleconfigure(子句不匹配造成的。

具体我有

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

这与我名为pachymen新子项目不匹配。 但是 Gradle 构建过程没有发出警告(我看到了),而是为pachymen子项目给出了“ Cannot read packageName from AndroidManifest.xml ”错误。

那只是因为您将现有项目及其文件复制到新创建的项目中。 从而导致Manifest 冲突。 因为复制的清单属于另一个项目及其路径。

您需要在您自己的项目文件路径中重新创建一个清单文件,并可能手动将其他项目的清单代码复制到您新创建的清单文件中。

检查您的 src 文件是否以不同的名称命名.....如果是这种情况,那么您最终可能会遇到此错误....将其重命名为“src

检查您的清单文件应该在-> \\android\\app\\src\\main\\AndroidManifest.xml

否则android无法从特定位置在Manifest文件中找到包名

就我而言,模块级别的 android 清单文件位于错误的位置。 它在src/java/而它应该在src/

尝试这个 ,

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

android:name="com.example.brandon.MineDodge.MainActivity"应该在<application> ,而不是<activity>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM