【问题标题】:Different native library for one of the product flavors一种产品风味的不同本机库
【发布时间】:2015-10-06 04:25:22
【问题描述】:

我的项目有几种产品风格,它们都共享同一个本机库,除了一个使用稍微不同的同名库。

认为这是 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 是重复的(Error:duplicate files during packaging of APK)并且它存在于多个来源中。它建议排除这个文件,虽然我不想排除但添加建议的代码不会改变任何东西。我知道我可以为每个其他风格创建不同的文件夹,并将相同的 lib1.so 放在它们的每个 jniLib 中,但这真的不是一个选择。

【问题讨论】:

    标签: android gradle android-gradle-plugin


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      相关资源
      最近更新 更多