我的项目有几个产品风味,它们都共享相同的本地库,除了使用略有不同的同名文本库。
考虑这是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期间重复文件)并且它存在于多个来源中。它建议排除此文件,但我不想排除,但添加建议的代码不会改变任何内容。我知道我可以为每个其他版本创建不同的文件夹,并在它们的每个jniLib中放置相同的lib1.so,但它实际上不是一个选项。
答案 0 :(得分:1)
对于那些想要完成同样事情的人来说,到目前为止我发现的最好的方法是更改共享同一个库的源包的根目录。
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