:checkDebugManifest FAILED =>为属性指定的文件' manifest'不存在

时间:2014-12-10 17:45:46

标签: android eclipse gradle

使用this guide我想在Eclipse中使用Gradle构建一个现有项目。

build.grale包含:

buildscript {
repositories {
    mavenCentral()
}

dependencies {
    classpath 'com.android.tools.build:gradle:0.14.0'
    }
}
apply plugin: 'android'

android {
    buildToolsVersion "19.1.0"
    compileSdkVersion 16
}

repositories {
    mavenCentral()
}

dependencies {
    compile files('libs/android-support-v4.jar')
}

但我明白了: enter image description here

如何解决此问题?我尝试了几个小时不同的方法,但似乎没有任何工作。

2 个答案:

答案 0 :(得分:8)

默认项目结构已更改,因此除非您告诉Gradle插件在哪里找到清单(以及其余代码)或切换到新结构,否则Gradle插件将查找错误的位置。

在您的情况下,它正在\src\main\AndroidManifest.xml查找清单,这是新Gradle项目的默认设置。旧项目结构(由Eclipse + ADT使用)将清单放在项目的根目录\AndroidManifest.xml

您可以使用sourceSets闭包在build.gradle中指定备用位置,如下所示:

android {
    // ...

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

        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
}

这将配置Android Gradle插件,以便为清单,Java源代码和资源使用旧的项目结构。

如果您使用Android Studio的导入工具,它应该为您处理所有这些。

答案 1 :(得分:1)

该指南与使用Gradle构建现有Eclipse项目无关。 “Eclipse”这个词在指南中没有出现。

如果您要迁移到Android Studio,请使用Android Studio项目导入向导。

如果您尝试使用Eclipse,但提供Gradle构建,您可以运行Eclipse导出向导来生成build.gradle文件,但需要进行一些额外的调整,如该向导尚未更新。

或者,从这个build.gradle文件开始并调整以适应:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}
apply plugin: 'com.android.application'

dependencies {
    compile 'com.android.support:support-v4:21.0.0'
}

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

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

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}