首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android在任务mergeDebugResources中生成项目失败

Android在任务mergeDebugResources中生成项目失败
EN

Stack Overflow用户
提问于 2014-11-10 14:01:55
回答 3查看 3.3K关注 0票数 0

我正在尝试将我的项目从Eclipse移到Android。在创建了所有模块(应用程序有几个库项目)之后,Gradle总是会因为这个错误而失败:

代码语言:javascript
复制
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文件是在库项目中定义的,并在app模块中用相同的名称重写。

针头说这在日食里很好用很久了。

有什么想法吗?

谢谢。

添加build.gradle文件:

这是应用程序文件:

代码语言:javascript
复制
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')
}

这是模块的文件:library 1,它是一个android库:

代码语言:javascript
复制
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')
}

这是模块的文件:library 2,它也是一个库:

代码语言:javascript
复制
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的库:

代码语言:javascript
复制
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的风格,我就可以将它们减少到两个模块。

Database.xml在AppLib中是:

代码语言:javascript
复制
<?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>

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-26 16:07:15

这显然是因为android与“定制”类型(如我放置的“数据库”)不太匹配。在把它变成字符串和整数之后,我开始工作。

不知道为什么在Eclipse中它是可以的,但是就像抱怨一样。

票数 0
EN

Stack Overflow用户

发布于 2014-11-10 16:33:13

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

上面处理传递库依赖关系。它很长,不完全符合您对名称值的冲突,但是您可能需要检查它。

我尝试在AS 0.8.14+中使用项目导入对话框,它很好地处理库之间的传递依赖关系.不要担心编码'build.gradles‘和他们的细节。相反,让进口商给它一个打击,然后,如果它不会建立成功,回到上面的问题链接的细节,并尝试如下:

代码语言:javascript
复制
 releaseCompile project(path: '..:$Path-to-Library1', configuration: 'release')
 debugCompile project(path: '..:$Path-to-Library1', configuration: 'debug')

你的“Library2”也一样

假设:您的eclipse.project.properties如下所示,作为进口商.

代码语言:javascript
复制
android.library.reference.1=../Library1
票数 0
EN

Stack Overflow用户

发布于 2014-11-10 16:36:45

我认为您需要在应用程序build.gradle中指定使用更新的gradle版本。

例如:

代码语言:javascript
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4.3'

    }
}

较早的gradle版本会给mergeDebugResources错误带来更多的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26845573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档