2015-06-18 6 views
3

Я пытаюсь запустить затмение Android в Android Studio.Ошибка: дубликаты файлов во время упаковки APK

Я пробую много решений в Интернете.

Но что-то не так еще бывает

Error:duplicate files during packaging of APK /home/sam/pst-adnew/panstage/build/outputs/apk/panstage-debug-unaligned.apk 
 
\t Path in archive: lib/armeabi-v7a/libmp3lame.so 
 
\t Origin 1: /home/sam/pst-adnew/panstage/build/intermediates/exploded-aar/pst-adnew/panstage_local_library/unspecified/jni/armeabi-v7a/libmp3lame.so 
 
\t Origin 2: /home/sam/pst-adnew/panstage/build/intermediates/ndk/debug/lib/armeabi-v7a/libmp3lame.so 
 
You can ignore those files in your build.gradle: 
 
\t android { 
 
\t packagingOptions { 
 
\t  exclude 'lib/armeabi-v7a/libmp3lame.so' 
 
\t } 
 
\t } 
 
Error:Execution failed for task ':panstage:packageDebug'. 
 
> Duplicate files copied in APK lib/armeabi-v7a/libmp3lame.so 
 
    \t File 1: /home/sam/pst-adnew/panstage/build/intermediates/exploded-aar/pst-adnew/panstage_local_library/unspecified/jni/armeabi-v7a/libmp3lame.so 
 
    \t File 2: /home/sam/pst-adnew/panstage/build/intermediates/exploded-aar/pst-adnew/panstage_local_library/unspecified/jni/armeabi-v7a/libmp3lame.so

Я работаю с NDK андроида студии ..

Пожалуйста, помогите мне.

Я также попробовал раствора

packagingOptions { 
 
     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' 
 
    }

Но это больше не работает. Пожалуйста, помогите мне :(

+0

Это приложение как зависимость от другого приложения? – ask4solutions

+0

Я сталкиваюсь с этой проблемой, когда использую третью библиотеку. Я решаю, удаляя файлы '.so'. –

ответ

0

Включите exclude 'lib/armeabi-v7a/libmp3lame.so', а в PackagingOption раздел.

packagingOptions { 
     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 'lib/armeabi-v7a/libmp3lame.so' 

    } 
+2

Спасибо, на самом деле я попробовал, но это не помогает. Может быть, еще один способ –

11

В случае дублирующих библиотек (* .so) файлы, исключать вариант не поможет, поскольку мы не можем полностью исключить родной двоичные файлы. Там еще один вариант в packagingOptions. Это 'PICKFIRST. Мы можем избежать дублирования ошибки файлов и включают в себя первый из них на встречи компилятора.

packagingOptions { 
     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' 
     pickFirst 'lib/armeabi-v7a/libmp3lame.so' 

    } 
+1

СПАСИБО. Я просто потратил много времени, пытаясь получить compile.exclude для работы с самим файлом aar, прежде чем встретить ваш ответ. Я не был знаком с pickFirst. – matt

+1

Это должен быть принятый андерсер. – rex123

0

у меня был подобный ВЫПУСКАЙТЕ Причина заключалась в том, что модуль был включен дважды в файл с длинным градиентом и его трудно заметить.

. 
. 
. 
compile project(path: ':common', configuration: 'debug') 
. 
. 
. 
compile project(path: ':common') 
. 
. 
. 

Поэтому, когда он добавлял файлы в папку отладки и второй раз в папке выпуска.

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

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