从发布到Maven Central的Android库中排除可选的子依赖项

时间:2017-08-09 12:47:23

标签: android gradle maven-central

我正在构建一个依赖于PayPal Android SDK的Android库 我想从PayPal SDK中排除card.io信用卡扫描。

compile('com.paypal.sdk:paypal-android-sdk:2.13.3') {
    exclude group: 'io.card'
}

问题是,当我将我的库推送到Maven Central并将其包含在示例项目中时,
无论如何,card.io本机库都包含在构建中,它们将apk大小增加了~11兆字节。

我尝试将此添加到我的build.gradle

packagingOptions {
    exclude 'lib/arm64-v8a/libcardioDecider.so'
    exclude 'lib/arm64-v8a/libcardioRecognizer.so'
    exclude 'lib/arm64-v8a/libcardioRecognizer_tegra2.so'
    exclude 'lib/arm64-v8a/libopencv_core.so'
    exclude 'lib/arm64-v8a/libopencv_imgproc.so'
    exclude 'lib/armeabi/libcardioDecider.so'
    exclude 'lib/armeabi-v7a/libcardioDecider.so'
    exclude 'lib/armeabi-v7a/libcardioRecognizer.so'
    exclude 'lib/armeabi-v7a/libcardioRecognizer_tegra2.so'
    exclude 'lib/armeabi-v7a/libopencv_core.so'
    exclude 'lib/armeabi-v7a/libopencv_imgproc.so'
    exclude 'lib/mips/libcardioDecider.so'
    exclude 'lib/x86/libcardioDecider.so'
    exclude 'lib/x86/libcardioRecognizer.so'
    exclude 'lib/x86/libcardioRecognizer_tegra2.so'
    exclude 'lib/x86/libopencv_core.so'
    exclude 'lib/x86/libopencv_imgproc.so'
    exclude 'lib/x86_64/libcardioDecider.so'
    exclude 'lib/x86_64/libcardioRecognizer.so'
    exclude 'lib/x86_64/libcardioRecognizer_tegra2.so'
    exclude 'lib/x86_64/libopencv_core.so'
    exclude 'lib/x86_64/libopencv_imgproc.so'
}

但只有当我将它添加到示例应用程序的build.gradle中时它才有效,而不是我的lib的build.gradle。 我想避免我的lib用户必须将其添加到他们应用程序的build.gradle中。

更多细节:
我实际上并没有立即将图书馆推向中心 我将它推送到oss.sonatype.org的一个临时存储库并使用它从那里拉出来:

repositories {
    maven {
        url "https://oss.sonatype.org/content/repositories/staging/"
    }
}

当我从repo手动查看.pom文件时,我没有看到为PayPal依赖项添加任何排除项。
我试图排除这两个群组' io.card'和模块' android-sdk'从PayPal依赖,然后排除DOES显示在.pom文件中,
但是card.io本机库仍然包含在最终版本中。

我在创建存储库后清除了gradle缓存,以确保它始终从暂存存储库下载最新版本的SDK。

一个丑陋的解决方案是在包含我的库时添加exclude group: 'io.card',但我想避免这种情况。

0 个答案:

没有答案