2016-01-21 4 views
0

Проблема возникает после добавления библиотеки Realm в мой проект. У меня есть эти зависимости в моем Gradle проекта:Ошибка: дублировать файлы во время упаковки APK после добавления зависимости Realm от gradle

apply plugin: 'com.android.library' 

    android { 
     compileSdkVersion 23 
     buildToolsVersion "23.0.2" 

     defaultConfig { 
      minSdkVersion 14 
      targetSdkVersion 23 
      versionCode 1 
      versionName "1.0" 
     } 

     buildTypes { 
      release { 
       minifyEnabled false 
       proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      } 
     } 

     packagingOptions { 
      exclude 'META-INF/services/javax.annotation.processing.Processor' 
     } 
    } 


    dependencies { 
     compile fileTree(dir: 'libs', include: ['*.jar']) 
     compile 'com.squareup.okhttp:okhttp:2.3.0' 
     compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
     compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 
     compile 'io.realm:realm-android:0.87.2' 
    } 

Я нашел много ответов на StackOverflow и я испытал многие из этого, но я не имею никакого успеха. Попробовал это answer и этот answer, но я думаю, что моя проблема - это нечто более конкретное.

Я также добавил предложение о ошибке LogCat, но im получил ту же ошибку. Любой ответ будет оценен.

Я предоставляю изображение полной ошибки для лучшего внешнего вида.

enter image description here

+0

Вы попытались выполнить инструкции, указанные в сообщении об ошибке? «Вы можете игнорировать эти файлы в своем build.gradle ...»? – CommonsWare

+0

@CommonsWare Да, я добавил инструкцию, как ее отображение в правильном теге android, 'exclude 'META-INF/services/javax.annotation.processing.Processor''. Я не знаю, должен ли я игнорировать другой файл. – diogojme

+0

Возможно, вы захотите опубликовать полный файл 'build.gradle'. – CommonsWare

ответ

1

Перемещайте android замыкание быть после dependencies закрытия:

apply plugin: 'com.android.library' 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.squareup.okhttp:okhttp:2.3.0' 
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 
    compile 'io.realm:realm-android:0.87.2' 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    packagingOptions { 
     exclude 'META-INF/services/javax.annotation.processing.Processor' 
    } 
} 

The LogCat show this error Gradle DSL method not found: 'packagingOptions()'

Тогда вы не внутри android.

+0

Это работает, проблема в том, что у меня есть два модуля. Модуль A - это исполняемый файл, а модуль B - это библиотека, я добавлял блок «packagingOptions» в модуле B, так что это все еще показывало ту же ошибку, когда я удаляю блок из модуля B и добавляю модуль A, который он работает. Большое спасибо. – diogojme

1

Это packagingOptions { Я использую, как правило, возможность построить что-либо до сих пор.

android { 
    ... 
    packagingOptions { 
     // Exclude file to avoid 
     // Error: Duplicate files during packaging of APK 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/NOTICE.txt' 
     exclude 'META-INF/notice.txt' 
     exclude 'META-INF/ASL2.0' 
     exclude 'META-INF/services/javax.annotation.processing.Processor' 
    } 
} 
+1

Он работает, спасибо. – diogojme

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