Android Studio 如何替换Android Gradle构建文件中已弃用的打包选项

bgibtngc  于 2023-01-21  发布在  Android
关注(0)|答案(1)|浏览(382)

我已迁移到gradle 8我的Android构建版本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}')
nwwlzxa7

nwwlzxa71#

它并没有说packaginOptions已被弃用:
https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions
https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/PackagingOptions
它表示excludes已弃用:

有趣的是,7.0文档中包含了excludes(https://developer.android.com/reference/tools/gradle-api/7.0/com/android/build/api/dsl/PackagingOptions #不包括: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)),但解释了如何将其替换为:
此函数已弃用。此方法已弃用。请改用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/资源打包选项#排除()
它举了一个例子:
排除的模式集。与其中任何模式匹配的Java资源都不会打包到APK中。
示例:android.打包选项.资源.排除+=“**/*.排除”
所以你可以试试。(看起来你已经试过了)。
您确定它突出显示为已弃用,而不是突出显示为8.0文档中所写的incubating吗?https://developer.android.com/reference/tools/gradle-api/8.0/com/android/build/api/dsl/PackagingOptions

相关问题