我正在尝试将我的项目从Eclipse移到Android。在创建了所有模块(应用程序有几个库项目)之后,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文件是在库项目中定义的,并在app模块中用相同的名称重写。
针头说这在日食里很好用很久了。
有什么想法吗?
谢谢。
添加build.gradle文件:
这是应用程序文件:
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库:
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,它也是一个库:
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的风格,我就可以将它们减少到两个模块。
Database.xml在AppLib中是:
<?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中只添加字符串。
发布于 2014-11-26 16:07:15
这显然是因为android与“定制”类型(如我放置的“数据库”)不太匹配。在把它变成字符串和整数之后,我开始工作。
不知道为什么在Eclipse中它是可以的,但是就像抱怨一样。
发布于 2014-11-10 16:33:13
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如下所示,作为进口商.
android.library.reference.1=../Library1发布于 2014-11-10 16:36:45
我认为您需要在应用程序build.gradle中指定使用更新的gradle版本。
例如:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.3'
}
}较早的gradle版本会给mergeDebugResources错误带来更多的错误。
https://stackoverflow.com/questions/26845573
复制相似问题