2014-12-13 4 views
1

Я получил эту ошибку дубликатов файлов во время упаковки APK приложения-отладка-unaligned.apk когда мигрируют проект из Eclipse, в Android студии:дубликатов файлов во время упаковки APK, libpjsua2.so

:app:compileDebugJava UP-TO-DATE 
:app:preDexDebug UP-TO-DATE 
:app:dexDebug UP-TO-DATE 
:app:processDebugJavaRes UP-TO-DATE 
:app:validateDebugSigning 
:app:packageDebug 
Error:duplicate files during packaging of APK C:\Users\aaa\AndroidStudioProjects\Pjsua2\app\build\outputs\apk\app-debug-unaligned.apk 
    Path in archive: lib/armeabi/libpjsua2.so 
    Origin 1: C:\Users\aaa\AndroidStudioProjects\Pjsua2\app\src\main\jniLibs\armeabi\libpjsua2.so 
    Origin 2: C:\Users\aaa\AndroidStudioProjects\Pjsua2\app\build\intermediates\ndk\debug\lib\armeabi\libpjsua2.so 
You can ignore those files in your build.gradle: 
    android { 
     packagingOptions { 
     exclude 'lib/armeabi/libpjsua2.so' 
     } 
    } 
Error:Execution failed for task ':app:packageDebug'. 
> Duplicate files copied in APK lib/armeabi/libpjsua2.so 
    File 1: C:\Users\aaa\AndroidStudioProjects\Pjsua2\app\src\main\jniLibs\armeabi\libpjsua2.so 
    File 2: C:\Users\aaa\AndroidStudioProjects\Pjsua2\app\src\main\jniLibs\armeabi\libpjsua2.so 
Information:BUILD FAILED 

Я попытался изменить build.gradle, но что-то получило такую ​​же ошибку. Мой build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 15 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "org.pjsip.pjsua2.app" 
     minSdkVersion 11 
     targetSdkVersion 15 

     ndk { 
      moduleName "libpjsua2" 
     } 
    } 

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

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

ответ

1

Я вижу на вашем пути, что 'jniLibs' находится внутри 'src/main'. Это означает, что файл .so включен при компиляции источника.

Переместите папку 'armeabi \ libpjsua2.so' в папку под названием 'libs' внутри папки 'Pjsua2 \ app \' (т. Е. Переместите ее в папку базового приложения).

Ваш .so файл будет затем в: Pjsua2 \ приложение \ ЛИЭС \ armeabi \ libpjsua2.so

Затем добавьте следующее в "андроида" закрытия вашего gradle.build в:

android { 
... 
    sourceSets.main { 
     jniLibs.srcDir 'libs' 
    } 
} 

Это может решить проблему двойного подсчета (сработало для меня).

+0

У меня такая же проблема: сможете ли вы обновить свой ответ с помощью файла build.gradle? – frmi

0

@Yervant Спасибо за подсказку, это очень помогло! Еще один комментарий для будущих пользователей: после перемещения libs я столкнулся с другой проблемой java.lang.UnsatisfiedLinkError: Native method not found: org.pjsip.pjsua2.pjsua2JNI.swig_module_init:(). Решением для этого было переместить классы pjsip в отдельный пакет и обновить импорт. Простой, как ад, но взял меня целый день, чтобы понять это;)

1

Я сталкивался с таким же вопросом и, наконец, получил это работает, исключив следующее build.gradle

 ndk { 
     moduleName "libpjsua2" 
    } 
1

Просто удалите JNI папки (и два файлы внутри: Android.mk & Application.mk) в импортированном проекте Android Studio.

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). –

+0

Привет Jaiprakash: Мой ответ «удалить папку jni» действительно решает проблему «Дублировать файлы». Это работает для меня. Вы можете попробовать это самостоятельно. –

0

Мне только удалось успешно импортировать pjsua2 в Android Studio, поэтому, возможно, я могу помочь. Из того, что я понимаю, папка jni содержит 2 файла, которые снова пытаются перестроить библиотеку, создав второй экземпляр. Удаление вашего предварительно сделанного путем перемещения jniLibs будет работать, но я не особо доверяю Android Studio, чтобы правильно его построить, поэтому я просто удаляю два файла внутри jni-папки, и проблема была решена.

Папка JNI для себя была в приложении каталога/SRC/основном/JNI

Я мог бы совершенно неправильно выше, но он работал на меня, так что я сделал несколько предположений.

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