我的应用程序使用 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?
谢谢
我强烈建议您切换到 Kotlin DSL。现在它是默认的 DSL,您可以立即获得类型安全的构建脚本,如果您搞乱了语法,您会收到实际上有用的错误消息,如果您使用 IntelliJ IDEA 或 Android Studio 等优秀的 IDE,那么您还会获得更好的 IDE 支持。
这里尤其会出现“实际上有用的错误消息”。 您收到的消息意味着“
myapp { ... }
块内的某些内容是错误的,但我没有告诉您是什么”。
在这种情况下,它是一个小块,所以不太难找出,但有时您会得到相同的 android { ... }
块,然后可以长时间评论进出随机事物以找到问题。
我想在你的情况下,问题是,你将
productFlavors
嵌套在 buildTypes
中,它不属于它(它们是平行的)。所以我的假设是,myapp
不被视为产品风格,而是构建类型(错误消息的这部分支持:on BuildType$AgpDecorated_Decorated{name=productFlavors"
),并且由于配置的属性不是预期的属性.