【问题标题】:Exclude native library in Gradle Android build在 Gradle Android 构建中排除本机库
【发布时间】:2015-06-29 21:36:07
【问题描述】:

与有关该主题的许多其他帖子相反,我想排除使用 Gradle 的 Android 构建中的本机库。

libfoo.so 位于默认目录thelib/src/main/jniLibs 中的库项目中。在我的主项目的 build.gradle 中,我尝试按如下方式排除该文件:

sourceSets {
    all{
        jniLibs {
            exclude '**/libfoo.so'
        }
    }
}

但这不起作用,该文件仍在最终的 APK 中。我已经尝试了不同的路径规范,但它们都不起作用。

这是否可能,或者有解决方法吗?

【问题讨论】:

    标签: android android-ndk android-gradle-plugin android-build


    【解决方案1】:

    我知道这是一个老问题,我用以下方法解决了我的问题

    packagingOptions {
     exclude 'lib/arm64-v8a/libfoo.so'
    }
    

    希望它可以帮助别人......

    注意: 在进一步搜索中,有人已经解决了类似的问题; Gradle exclude arm64 libs

    【讨论】:

    • 感谢您的回复!我后来遇到了这个错误:code.google.com/p/android/issues/detail?id=185982,但由于您的解决方案在技术上适用于我描述的简单案例,我会接受您的回答。
    • @langerhans 谢谢你......在我的情况下,我从未遇到过依赖问题,但我所做的是在我的 build.gradle 中添加一个条件标志,并在我的依赖部分中执行类似的操作如果(flag_is_set) 编译 'com.foo:libfoo:1.0.0';也在我的包装选项部分; if(flag_is_set) 排除 'lib/arm64-v8a/libfoo.so'
    • 我不得不承认我的用例有点奇怪,但无论如何都需要依赖项,因为它包含本机库功能的后备实现。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 2020-12-17
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多