[英]Gradle: exclude a dependency's package
是否可以從 Android Gradle 依賴項中排除包,使其不會最終出現在 APK 中?
如:
dependencies {
compile('com.facebook.android:facebook-android-sdk:4.17.0') {
exclude package 'com.facebook.share'
}
}
但隨后不同,因為“包”不是有效的命令。
這樣,你可以從庫中排除幾個包,這只是概念的一個例子
compile ('com.github.ganfra:material-spinner:1.1.1'){
exclude group: 'com.nineoldandroids', module: 'library'
exclude group: 'com.android.support', module: 'appcompat-v7'
}
您不能排除工件的某些特定部分,因為 Gradle 對其中的內容一無所知。 對於 Gradle 來說,它是整體式的:您要么將工件包含在其中,要么不包含。
使用 ProGuard 可以實現您想要的。 這是構建應用程序的發布版本時的常見步驟,您可以指定進行收縮的規則,這將刪除不必要的代碼。 Android 文檔中有一篇代碼縮減文章,其中包含更多詳細信息。
唯一可能出現的問題是,如果依賴項本身包含 ProGuard 配置文件,則可能無法強制收縮指定要保存在其中的內容。 但是,我剛剛查看了您詢問的 AAR,情況似乎並非如此。
您可以在 build.gradle 中使用 sourceSets 來過濾您不想捆綁在 apk 或 aab 中的包或類。 例如——
android {
sourceSets {
main {
java {
exclude 'com/a/b/helper/**'
exclude 'com/a/ext/util/TestUtils.java'
}
}
}
}
希望它會有所幫助:)
從依賴項組中排除參考庫的更新答案
implementation (group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'){
//example : org.olap4j:olap4j:0.9.7.309-JS-3
exclude group: 'org.olap4j', module: 'olap4j'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.