相关疑难解决方法(0)

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

在构建具有两个库模块的父项目时会出现"重复文件"冲突,这两个库模块使用相同的libc++_shared.so共享库.

(注意:请不要认为这是一个"重复的问题".我已经阅读了几篇相关的帖子,这些帖子帮助我做到了这一点.但是,没有帖子提供了一个在我的案例中涉及NDK工件的答案.)

当我只有一个这样的库模块时,构建工作正常.添加第二个库模块现在正在产生冲突.

考虑以下项目结构:1个父项目,2个"子"项目 - 但每个项目位于相同的目录级别(即不按层次结构嵌套)

ProjectA/   (Parent)
    LibraryModuleA1/
        build/exploded-aar/com.package.name/
            LibraryModuleB1/<version>/jni/armeabi-v7a/libc++_shared.so
            LibraryModuleC1/<version>/jni/armeabi-v7a/libc++_shared.so
        build.gradle    (bgA1)
    Test_APK_Module A1T/
        build.gradle    (bgA1T)
    build.gradle    (bgPA)

ProjectB/
    LibraryModuleB1/  (Uses NDK)
        build/lib/armeabi-v7a/libc++_shared.so
        build.gradle    (bgB1)
    build.gradle    (bgPB)

ProjectC/
    LibraryModuleC1/  (Uses NDK)
        build/lib/armeabi-v7a/libc++_shared.so
        build.gradle    (bgC1)
    build.gradle    (bgPC)
Run Code Online (Sandbox Code Playgroud)

库模块A1依赖于库模块B1和C1.
A1 - > B1
A1 - > C1

项目B和C都具有基于NDK的代码并正确构建/测试.两者都依赖于libc++_shared.so共享库.

但是,在构建项目A时,我在:LibraryModuleA1:packageDebugTest任务期间收到以下错误:

Error: duplicate files during packaging of APK   /ProjectA/LibraryModuleA1/build/apk/LibraryModuleA1-debug-test-unaligned.apk
    Path in archive: lib/armeabi-v7a/libc++_shared.so
    Origin 1:  /ProjectA/LibraryModuleA1/build/exploded-aar/com.package.name/LibraryModuleB1/<version>/jni/armeabi-v7a/libc++_shared.so
    Origin 2:  /ProjectA/LibraryModuleA1/build/exploded-aar/com.package.name/LibraryModuleC1/<version>/jni/armeabi-v7a/libc++_shared.so
You can ignore …
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk android-gradle-plugin

6
推荐指数
1
解决办法
2214
查看次数

标签 统计

android ×1

android-gradle-plugin ×1

android-ndk ×1

c++ ×1