重复的文件,libpjsua2.so

问题描述:

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

请帮我修复。

我从你的路径看到'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

@Yervant感谢提示,它帮助了很多! 对未来用户的一点评论:在移动库之后,我遇到了另一个问题java.lang.UnsatisfiedLinkError: Native method not found: org.pjsip.pjsua2.pjsua2JNI.swig_module_init:()。解决方案是将pjsip类移入单独的包并更新导入。简单地狱,但我花了整整一天的数字出来;)

我面临着同样的问题,终于得到了它的工作通过删除的build.gradle

 ndk { 
     moduleName "libpjsua2" 
    } 

只要删除JNI文件夹下(两文件里面:Android.mk & Application.mk)在你的Android Studio导入的项目。

+0

这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://*.com/help/whats-reputation),你会能够[评论任何帖子](http://*.com/help/privileges/comment)。 – 2015-09-30 04:53:10

+0

嗨Jaiprakash:我的答案“删除jni文件夹”确实解决了他的“重复文件”问题。这对我有用。 你也可以自己尝试一下。 – 2015-09-30 07:36:12

我刚刚设法成功导入pjsua2到Android Studio,所以也许我可以帮助。从我所了解的jni文件夹包含2个文件,试图重建库再次创建第二个实例。通过移动jniLibs来移除预先创建的文件将会工作,但我并不特别相信Android Studio能够正确构建它,因此,我只是删除了jni文件夹中的两个文件,问题就解决了。

为自己的JNI文件夹是目录中的应用程序/ src目录/主/ JNI

我可能是完全错误的,但上面它的工作对我,所以我做了一些假设。