我的项目有几个产品调味剂,它们全部共享相同的本机库,只是其中一个使用的名称略有不同。

考虑这是build.gradle:

android {
    ...
    productFlavors {
        p0 {
        ....
        }
        p1 {
        ....
        }
        p2 {
        ....
        }
        p3 {
        ....
        }
        p4 {
        ....
        }
        p5 {
        ....
        }
    }
}

这是文件夹结构:
src
...main
......jnilibs
.........armeabi-v7a
............lib1.so
...p5
......jnilibs
.........armeabi-v7a
............lib1.so

当我编译p5时,它抱怨lib1.so是重复的(错误:在打包APK 的过程中文件重复),并且它存在于多个源中。它建议排除此文件,尽管我不想排除但添加建议的代码不会改变任何内容。我知道我可以为其他每种口味创建不同的文件夹,并将相同的lib1.so放在每种口味的jniLib中,但这实际上不是一个选择。

最佳答案

对于那些想完成相同事情的人,到目前为止,我发现最好的是更改共享同一库的软件包源集的根。

build.gradle将是这样的:

android {
    ...
    productFlavors {
        p0 {
        ....
        }
        p1 {
        ....
        }
        p2 {
        ....
        }
        p3 {
        ....
        }
        p4 {
        ....
        }
        p5 {
        ....
        }
    }
    sourceSets {
        p0.setRoot("src/p")
        p1.setRoot("src/p")
        p2.setRoot("src/p")
        p3.setRoot("src/p")
        p4.setRoot("src/p")
    }
}

资料夹结构:
src
...main
...p
......jnilibs
.........armeabi-v7a
............lib1.so
...p5
......jnilibs
.........armeabi-v7a
............lib1.so

关于android - 产品口味之一的不同 native 库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31459042/

10-10 20:22