Android Studio无法在任务mergeDebugResources中构建项目

时间:2014-11-10 14:01:55

标签: android android-studio android-gradle

我正在尝试将我的项目从Eclipse迁移到Android Studio。 在创建所有模块(应用程序有一些库项目)后,Gradle始终失败并显示此错误:

Error:Execution failed for task ':AppLib:mergeDebugResources'.
> Unsupported type 'database' in file C:\Android\Code\AS_workspace\SuperApp\Infra\src\main\res\values\database.xml

此XML文件在库项目中定义,并在应用程序模块中使用相同名称重写。

有人说这在Eclipse中很好用了很久......

有什么想法吗?

感谢。

添加build.gradle文件:

这是app文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.app.superapp"
        minSdkVersion 10
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library1')
}

这是模块的文件:library1是一个android库:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"
    defaultConfig {
        minSdkVersion 10
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':library2')
}

这是module:library2的文件,它也是一个库:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"
    defaultConfig {
        minSdkVersion 10
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':AppLib')
}

现在是AppLib的库:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"
    defaultConfig {
        minSdkVersion 10
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':GooglePlayServices')
    compile project(':facebook')
}

我有很多库但是一旦我完全理解了Gradle的味道,我就可以将它们减少到两个模块。

AppLib中的Database.xml是:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="NAME" format="string" type="database"/>
    <item name="TABLE_NAME" format="string" type="database"/>
    <item name="DATABASE_VERSION" format="integer" type="database">101</item>
    <item name="MIN_APPLICATION_DATABASE_VERSION" format="integer" type="database">10</item>

</resources>

SuperApp中的Database.xml只是添加字符串。

3 个答案:

答案 0 :(得分:0)

https://code.google.com/p/android/issues/detail?id=52962

以上涉及传递库依赖关系。它的长度,并不完全符合您对名称值的冲突,但您可能想要查看它。

我会尝试使用AS 0.8.14+中的项目导入对话框,这对于库之间的传递依赖性非常好......不要担心编译'build.gradles'及其细节。相反,让进口商给它打击,然后,如果它不会成功,请回到上面问题链接的详细信息并尝试类似:

 releaseCompile project(path: '..:$Path-to-Library1', configuration: 'release')
 debugCompile project(path: '..:$Path-to-Library1', configuration: 'debug')

和你的'Library2'相同

假设:您的eclipse.project.properties如下所示,以指导AS导入器...

android.library.reference.1=../Library1

答案 1 :(得分:0)

我认为您需要在app build.gradle中使用较新的gradle版本进行指定。

前:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.3'

    }
}

较旧的gradle版本更经常地给出mergeDebugResources错误。

答案 2 :(得分:0)

这显然是因为android studio与“自定义”类型不太合适,就像我放“数据库”一样。 在使用字符串和整数后,我工作了。

不知道为什么在Eclipse中它没关系,但AS抱怨。