2014-11-10 6 views
0

Я пытаюсь переместить мой проект из Eclipse в Android Studio. После создания всех модулей (приложение имеет несколько проект библиотеки), Gradle терпит неудачу с этой ошибкой все время:Android Studio не удается построить проект в task mergeDebugResources

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 файлов:

Это файл приложения:

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 который является андроидом библиотека:

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') 
} 

Это является файлом для модуля: 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, я буду в состоянии уменьшить их до двух модулей.

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 просто добавляет строки.

+0

Можете ли вы показать код сборки вашего приложения? – Lukos

+0

@ Lukos, для всего проекта, приложения библиотеки или основного приложения? – Raz

+0

Все три будут самыми быстрыми в решении, у меня есть ощущение, что это может быть в библиотеке, но я не могу быть уверен. – Lukos

ответ

0

Это, по-видимому, происходит потому, что андроид-студия не очень хорошо сочетается с «обычным» типом, как я поставил «базу данных». После того, как я сделал это для строк и целых чисел, я работал.

Не знаю, почему в Eclipse все нормально, но AS жалуется.

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

Я думаю, вам нужно указать, используя более новую версию Gradle в вашем приложении build.gradle.

Ex:

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

    } 
} 

Старые Gradle версии дают в mergeDebugResources ошибки намного чаще.

+0

Возможно, попробуйте также очистить и перестроить ваш проект, иногда это помогает. – Lukos

+0

Я использую новую версию gradle.0.13.2. Во всяком случае, очистить и перестроить не помогло. – Raz

+0

Вы поместили путь classpath для этой зависимости градиента в свой build.gradle? Я этого не вижу. – Lukos

Смежные вопросы