[英]How to replace deprecated packagingOptions in Android Gradle build files
我已经迁移到 gradle 8 我的 android build.gradle 文件显示
plugins {
id 'com.android.application' version '8.1.0-alpha01' apply false
id 'com.android.library' version '8.1.0-alpha01' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
id 'com.google.dagger.hilt.android' version '2.44.2' apply false
}
tasks.register('clean') {
delete rootProject.buildDir
}
现在在我的模块 gradle.build 文件中 packagingOptions 被突出显示为已弃用
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
我以为我找到了这个解决方案
packagingOptions {
resources.excludes.add('/META-INF/{AL2.0,LGPL2.1}')
}
哪个不起作用?! 已弃用的 packagingOptions exclude 的正确替代品是什么?
我用的android studio版本是
Android Studio Giraffe | 2022.3.1 Canary 1
Build #AI-223.4884.69.2231.9486165, built on January 13, 2023
Runtime version: 17.0.5+0-17.0.5b653.23-9410051 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 12.6.1
GC: G1 Young Generation, G1 Old Generation
Memory: 4096M
Cores: 12
Metal Rendering is ON
Registry:
external.system.auto.import.disabled=true
ide.text.editor.with.preview.show.floating.toolbar=false
ide.images.show.chessboard=true
Non-Bundled Plugins:
com.android.aas (3.5.1)
这似乎可以解决它
packagingOptions.resources.excludes.add('/META-INF/{AL2.0,LGPL2.1}')
它没有说packaginOptions
已被弃用:
它说excludes
已被弃用:
有趣的是,7.0 文档包括excludes
( https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions#excludes:kotlin.collections.MutableSet )。
7.2 只有exclude
( https://developer.android.com/reference/tools/gradle-api/7.2/com/android/build/api/dsl/PackagingOptions#exclude(kotlin.String) )但解释了交换它的内容和:
此 function 已弃用。 此方法已弃用。 请改用 resources.excludes.add() 或 jniLibs.excludes.add() 。 对 .so 文件模式使用 jniLibs.excludes.add(),对所有其他文件模式使用 resources.excludes.add()。
这就是你所做的。
如果您阅读 8.0 文档并单击resources.excludes
https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/ResourcesPackagingOptions#excludes()
它举了一个例子:
排除的模式集。 Java 匹配任何这些模式的资源不会打包在 APK 中。
示例:android.packagingOptions.resources.excludes += "**/*.exclude"
所以你可以试试看。 (这看起来像你有)。
您确定它突出显示为已弃用,而不是像 8.0 文档中所写的那样突出显示为正在incubating
吗? https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/PackagingOptions
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.