我正在构建一个依赖于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'
,但我想避免这种情况。