无法从AndroidManifest.xml读取packageName

时间:2015-09-08 00:45:59

标签: java android android-gradle

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

14 个答案:

答案 0 :(得分:19)

如果您使用旧版本的 build.grade 文件,则应删除此代码:

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

然后, Build&gt;清洁项目

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

答案 1 :(得分:3)

错误非常简单,我对堆栈社区感到非常失望,直到现在还没有找到它。

fold_l_impl

应该成为

< manifest ...

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

<manifest...

此外,用于MainActivity的intent-filter必须类似地用于第二个活动。

希望这个问题得到解决。

答案 2 :(得分:3)

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

为我修复: 将程序包名称添加到Unity项目中的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替换为项目的程序包名称。它应该在“编辑”->“项目设置”->“播放器”->“其他设置”->“标识”->“程序包名称”中,并且应类似于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中,它不起作用,我也认为这是一个错误。

答案 3 :(得分:0)

你的第二个<action android:name="android.intent.action.MAIN" />和             此处不允许<category android:name="android.intent.category.LAUNCHER" />。 我认为 `     &LT; manifest xmlns:android =&#34; http://schemas.android.com/apk/res/android"     包=&#34; com.example.brandon.MineDodge&#34; &GT;

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

` 那没关系。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我在多子项目项目中有这个问题,原因是子项目与顶级configure(中的build.gradle子句不匹配。

特别是我有

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

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

答案 6 :(得分:0)

这很简单,因为您要么已经将现有项目及其文件复制到新创建的项目中。从而导致Manifest冲突。因为复制的清单属于另一个项目及其路径。

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

答案 7 :(得分:0)

响应Eldar Kurbanov的人在Unity中遇到此错误,以及在Unity中使用gradle构建时出现错误后找到此问题的其他人。

这不是Unity 2018的“错误”,也不是Manifest预构建中缺少的东西引起的。实际上是由于mainTemplate.gradle文件缺少以下行引起的:

applicationId '**APPLICATION**'

android {} 部分的 defaultConfig {} 块中。这样可以确保在生成的清单中插入了包名。

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

如果其他人找到了这个问题并且他们正在使用Unity,则可以使用以下示例mainTemplate.gradle进行引用:https://pastebin.com/hPs0uvkZ

答案 8 :(得分:0)

我的问题是我试图将旧的Eclipse项目转换为清单文件应位于其他位置的Android Studio项目(以及其他文件)。具体是 project \ app \ src \ main

答案 9 :(得分:0)

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

答案 10 :(得分:0)

检查清单文件应位于-> \ android \ app \ src \ main \ AndroidManifest.xml

否则android在特定位置的清单文件中找不到包名称

答案 11 :(得分:-1)

试试这个,

<?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 :(得分:-1)

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

答案 13 :(得分:-2)

for(numclicks: clickStream.length){

    // first subscription
    if (numclicks === 1){ 
        document.querySelector('h2').textContent = 'click';
    }

    // second subscription
    if(numclicks > 1){
        document.querySelector('h2').textContent = ''+numclicks+'x click';
    }

    // merged subscription
    if (numclicks === 0) {
        document.querySelector('h2').textContent = '';
    }
 }

将其更改为 -

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