Android Studio 中从 gradle 7 升级到 gradle 8 无法同步 gradle 文件

问题描述 投票:0回答:1

我的应用程序使用 Gradle 7.X(和适当的 AGP)构建得很好。 当仅将 gradle 和 AGP 升级到 8.0 时(使用最新的 8.X 时也是如此),我无法再同步。

build.gradle 中的以下行:

....
productFlavors {
        myapp{
            dimension "allBuilds"
            applicationId "com.mycompany.app.myapp"
            manifestPlaceholders = [ appLabel:getAppName("myapp") ]
....

报错为:

Build file 'C:\SVN\Trunk\AndroidAS\app\build.gradle' line: 371

A problem occurred evaluating project ':app'.
> Could not find method myapp() for arguments [build_dafdi2f917kzmqhe29txz3kwk$_run_closure1$_closure7$_closure17$_closure23@6697cf51] on BuildType$AgpDecorated_Decorated{name=productFlavors, debuggable=false, testCoverageEnabled=false, jniDebuggable=false, pseudoLocalesEnabled=false, renderscriptDebuggable=false, renderscriptOptimLevel=3, minifyEnabled=false, zipAlignEnabled=true, signingConfig=null, embedMicroApp=true, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}} of type com.android.build.gradle.internal.dsl.BuildType$AgpDecorated.

我尝试将文件简化为完全简单的

productFlavors
和单一的“
myapp
”风格。当我重新添加口味时,就会出现错误。

如果我继续删除 build.gradle 的部分内容,我可以做到这一点,但仍然遇到相同的错误:

apply plugin: 'com.android.application'

android {
    namespace 'com.mycompany.app.myapp'

    buildTypes {
        productFlavors {
            myapp{
                applicationId "com.mycompany.app.myapp"
            }
        }
    }
}

这已经是最简单的了。 看来一定是配置问题而不是gradle文件本身的问题

此次升级还需要进行其他更改吗?Android Studio 中还有其他更改吗(Android Studio Koala 功能下降 | 2024.1.2 补丁 1)?

升级的需要是我想使用Crashlytics.log()和相关方法。

或者,有没有办法在不升级到 Gradle/AGP 8.X 的情况下使用 Crashlytics breadcrumbs

谢谢

android android-studio gradle crashlytics
1个回答
0
投票

我强烈建议您切换到 Kotlin DSL。现在它是默认的 DSL,您可以立即获得类型安全的构建脚本,如果您搞乱了语法,您会收到实际上有用的错误消息,如果您使用 IntelliJ IDEA 或 Android Studio 等优秀的 IDE,那么您还会获得更好的 IDE 支持。

这里尤其会出现“实际上有用的错误消息”。 您收到的消息意味着“

myapp { ... }
块内的某些内容是错误的,但我没有告诉您是什么”。 在这种情况下,它是一个小块,所以不太难找出,但有时您会得到相同的
android { ... }
块,然后可以长时间评论进出随机事物以找到问题。

我想在你的情况下,问题是,你将

productFlavors
嵌套在
buildTypes
中,它不属于它(它们是平行的)。所以我的假设是,
myapp
不被视为产品风格,而是构建类型(错误消息的这部分支持:
on BuildType$AgpDecorated_Decorated{name=productFlavors"
),并且由于配置的属性不是预期的属性.

© www.soinside.com 2019 - 2024. All rights reserved.