2014-12-13 113 views
1

我APK應用程序,調試unaligned.apk的包裝過程中遷移時,從項目到Eclipse的Android的工作室得到這個錯誤重複文件:重複的文件,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'文件夾移出到'Pjsua2 \ app \'文件夾內的名爲'libs'的文件夾中(即將其移出到基本應用程序文件夾)。然後

你的.so文件將是: Pjsua2 \程序\庫\ armeabi \ libpjsua2.so

然後添加以下在gradle.build的 「機器人」 關閉:

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

這可能會解決重複計算問題(爲我工作)。

+0

我遇到同樣的問題,你能用你的build.gradle文件更新你的答案嗎? – frmi 2015-03-19 19:08:18

0

@Yervant感謝提示,它幫助了很多! 對未來用戶的一點評論:在移動庫之後,我遇到了另一個問題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)。 – 2015-09-30 04:53:10

+0

嗨Jaiprakash:我的答案「刪除jni文件夾」確實解決了他的「重複文件」問題。這對我有用。 你也可以自己嘗試一下。 – 2015-09-30 07:36:12

0

我剛剛設法成功導入pjsua2到Android Studio,所以也許我可以幫助。從我所瞭解的jni文件夾包含2個文件,試圖重建庫再次創建第二個實例。通過移動jniLibs來移除預先創建的文件將會工作,但我並不特別相信Android Studio能夠正確構建它,因此,我只是刪除了jni文件夾中的兩個文件,問題就解決了。

爲自己的JNI文件夾是目錄中的應用程序/ src目錄/主/ JNI

我可能是完全錯誤的,但上面它的工作對我,所以我做了一些假設。