Android gradle复制本机共享库

pka*_*pka 7 android android-ndk android-studio android-gradle-plugin

我的问题类似于这里提出的问题:

如何在多项目Android Build中排除重复的C共享库(.so)?

在我的项目中,我有一个共享库,它有一些本机代码MySharedLib.我有一个TestDuplicateSharedLibApp依赖的应用程序,MySharedLib也有本机代码.

作为gradle构建的一部分,我ndk-build通过设置禁用自动呼叫jni.srcDirs =[].我明确地调用了ndk-build命令.

作为MySharedLib构建过程的一部分,libMySharedLib.so生成并打包到MySharedLib.aar.

TestDuplicateSharedLibApp取决于MySharedLib.作为ndk-build的一部分,libTestDuplicateSharedLibApp.so并被libMySharedLib.so复制到TestDuplicateSharedLibApp/libs目录中.

因为我需要在最终的apk中打包共享库,所以我jniLibs.srcDirs=['libs']在build.gradle中.

当最终的apk被打包时,包装因副本的副本而失败libMyShared.so,其中一个来自MySharedLib.aar和来自TestDuplicateSharedLibApp/libs.我试过pick-firstexclude打包选项,但他们没有帮助.

基本上我需要的是jniLibs.srcDirs文件的等价物.在TestDuplicateSharedLibApp我想说:只包括libTestDuplicateSharedLibApp.so.我设想这样做:jniLibs.srcDirs=[]并且,如果存在jniLibs.srcFiles选项jniLibs.srcFiles='libTestDuplicateSharedLibApp.so'

我很感激解决这个问题的见解.