Ошибка с Gradle: не удалось получить проект неизвестного свойства для ProductFlavor_Decorated

Я везде искал эту проблему, и я не нашел решения для этого. Я обновил Gradle до версии 6.7.1. При попытке синхронизировать Gradle в первый раз после обновления я получил эту ошибку:

Caused by: groovy.lang.MissingPropertyException: Could not get unknown property 'project' for ProductFlavor_Decorated{name=flavor1, dimension=null, minSdkVersion=null, targetSdkVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null, applicationId=null, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments = {}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=[], buildConfigFields = {}, resValues = {}, proguardFiles=[], consumerProguardFiles=[], manifestPlaceholders = {}, wearAppUnbundled=null} of type com.android.build.gradle.internal.dsl.ProductFlavor.
    at org.gradle.internal.metaobject.AbstractDynamicObject.getMissingProperty(AbstractDynamicObject.java:85)
    at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:62)
    at com.android.build.gradle.internal.dsl.ProductFlavor_Decorated.getProperty(Unknown Source)
    at de.triplet.gradle.play.PlayPublisherPlugin$_apply_closure2.doCall(PlayPublisherPlugin.groovy:26)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
    at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:100)
    at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:95)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
    at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
    at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
    at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
    at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
    at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:92)
    at org.gradle.internal.ImmutableActionSet$SetWithFewActions.execute(ImmutableActionSet.java:285)
    at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:264)
    at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113)
    at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:253)
    at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:79)
    at org.gradle.api.internal.AbstractNamedDomainObjectContainer.create(AbstractNamedDomainObjectContainer.java:71)
    at org.gradle.api.internal.NamedDomainObjectContainerConfigureDelegate._configure(NamedDomainObjectContainerConfigureDelegate.java:39)
    at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:65)
    at build_vakvk2514duks3dkwbm106jz$_run_closure2$_closure14.doCall({project-directory}/app/build.gradle:81)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
    at org.gradle.util.ConfigureUtil.configureSelf(ConfigureUtil.java:142)
    at org.gradle.api.internal.AbstractNamedDomainObjectContainer.configure(AbstractNamedDomainObjectContainer.java:91)
    at org.gradle.api.internal.AbstractNamedDomainObjectContainer.configure(AbstractNamedDomainObjectContainer.java:38)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:103)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
    at com.android.build.gradle.internal.dsl.CommonExtensionImpl.productFlavors(CommonExtensionImpl.kt:197)
    at com.android.build.gradle.internal.dsl.BaseAppModuleExtension.productFlavors(BaseAppModuleExtension.kt)
    at com.android.build.gradle.internal.dsl.BaseAppModuleExtension_Decorated.productFlavors(Unknown Source)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
    at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
    at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
    at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
    at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:56)
    at build_vakvk2514duks3dkwbm106jz$_run_closure2.doCall({project-directory}/app/build.gradle:80)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
    at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
    at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:105)
    at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
    at org.gradle.internal.extensibility.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:173)
    at org.gradle.internal.extensibility.ExtensionsStorage.configureExtension(ExtensionsStorage.java:64)
    at org.gradle.internal.extensibility.DefaultConvention.configureExtension(DefaultConvention.java:364)
    at org.gradle.internal.extensibility.DefaultConvention.access$500(DefaultConvention.java:45)
    at org.gradle.internal.extensibility.DefaultConvention$ExtensionsDynamicObject.tryInvokeMethod(DefaultConvention.java:301)
    at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
    at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:34)
    at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:134)
    at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
    at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:83)
    at build_vakvk2514duks3dkwbm106jz.run({project-directory}/app/build.gradle:22)
    at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
    ... 140 more

это вкус продукта:

flavorDimensions "brand", "environment"
productFlavors {
        flavor1 {
            dimension "brand"
            playAccountConfig = playAccountConfigs.defaultAccountConfig
            applicationId "com.flavor1.foo"
            buildConfigField("String", "productName", "\"Flavor 1\"")
        }
        flavor2 {
            dimension "brand"
            playAccountConfig = playAccountConfigs.defaultAccountConfig
            applicationId "com.flavor2.foo"
            buildConfigField("String", "productName", "\"Flavor 2\"")
        }
        iat {
            dimension "environment"
            buildConfigField("boolean", "IAT_ENVIRONMENT", "true")
        }
        prod {
            dimension "environment"
            buildConfigField("boolean", "IAT_ENVIRONMENT", "false")
        }
    }

Я не понимаю, что вызвало его внезапный сбой, он отлично работал с Gradle версии 5.6.4.

Что находится в строке 81 из $projectDir/app/build.gradle? Можете ли вы предоставить минимальный воспроизводимый пример?

Chriki 21.01.2021 20:19

С моей точки зрения, трудно сказать, в чем проблема, потому что я не могу воспроизвести проблему. Кажется, что предоставленного вами кода недостаточно. Может быть связано с некоторой дополнительной конфигурацией в вашем проекте. Я думаю, что предоставление простого демо-проекта, в котором мы можем воспроизвести проблему, было бы очень полезно.

Haris 22.01.2021 14:45

Я понял проблему. Это было связано с издателем Gradle Play. Я удалил плагин, и теперь проект строится.

comolaflor 22.01.2021 18:19
6
3
13 694
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

*Примечание: возможно, вы уже сделали кое-что из этого, но я собираюсь включить все это на всякий случай.

Создайте новый файл с именем «gradle.properties» в корне проекта. Скопируйте и вставьте эти конфигурации, которые соответствуют вашим потребностям:

  • ./gradle.properties
  • ./приложение/build.градле
  • Firebase — google-services.json
  • Удаленные конфигурации
  • Версия протокола

Конфиги в gradle.properties

Пример конфигурации

ORG = "SG_OTC"
STORE_URL = "<Play store URL>"
PRIVACY_URL = "<Privacy policy URL>"

SERVICE_FOREGROUND_NOTIFICATION_ID=771579
SERVICE_FOREGROUND_CHANNEL_ID = "OpenTrace Updates"
SERVICE_FOREGROUND_CHANNEL_NAME = "OpenTrace Foreground Service"

PUSH_NOTIFICATION_ID=771578
PUSH_NOTIFICATION_CHANNEL_NAME = "OpenTrace Notifications"

#service configurations
SCAN_DURATION=8000
MIN_SCAN_INTERVAL=36000
MAX_SCAN_INTERVAL=43000

ADVERTISING_DURATION=180000
ADVERTISING_INTERVAL=5000

PURGE_INTERVAL=86400000
PURGE_TTL=1814400000
MAX_QUEUE_TIME=7000
BM_CHECK_INTERVAL=540000
HEALTH_CHECK_INTERVAL=900000
CONNECTION_TIMEOUT=6000
BLACKLIST_DURATION=100000

FIREBASE_REGION = "<Your Firebase region>"

STAGING_FIREBASE_UPLOAD_BUCKET = "opentrace-app-staging"
STAGING_SERVICE_UUID = "17E033D3-490E-4BC9-9FE8-2F567643F4D3"

V2_CHARACTERISTIC_ID = "117BDD58-57CE-4E7A-8E87-7CCCDDA2A804"

PRODUCTION_FIREBASE_UPLOAD_BUCKET = "opentrace-app"
PRODUCTION_SERVICE_UUID = "B82AB3FC-1595-4F6A-80F0-FE094CC218F9"

android.useAndroidX=true
android.enableJetifier=true


Конфигурации сборки в build.gradle

Соответственно измените имя пакета и другие конфигурации, такие как resValue в различных настройках в buildTypes Например,

buildTypes {
    debug {
            buildConfigField "String", "FIREBASE_UPLOAD_BUCKET", STAGING_FIREBASE_UPLOAD_BUCKET
            buildConfigField "String", "BLE_SSID", STAGING_SERVICE_UUID

            String ssid = STAGING_SERVICE_UUID
            versionNameSuffix "-debug-${getGitHash()}-${ssid.substring(ssid.length() - 5,ssid.length() - 1 )}"
            resValue "string", "app_name", "OpenTrace Debug"
            applicationIdSuffix "stg"
        }

Такие значения, как STAGING_FIREBASE_UPLOAD_BUCKET, STAGING_SERVICE_UUID, были определены в gradle.properties, как описано выше.


Firebase и google-services.json

Настройте Firebase для другой среды. Загрузите файл google-services.json для каждой из сред и поместите его в соответствующую папку.

Отладка: ./app/src/debug/google-services.json

Производство: ./app/src/release/google-services.json.

В настоящее время приложение использует функции Firebase для работы. Дополнительную информацию можно получить, обратившись к opentrace-cloud-functions.


Удаленная конфигурация

Удаленная конфигурация используется для получения сообщения «Поделиться», используемого в приложении. Ключ для него — «ShareText». Если его невозможно получить, он возвращается к R.string.share_message.


Версия протокола

Используемая версия протокола должна быть 2 (или выше) Версия 1 протокола устарела


из документации GitHub

Не могли бы вы уточнить, как это отвечает на вопрос? Мне кажется это не имеет отношения…

Chriki 21.01.2021 20:20

@Chriki, вам нужно добавить это в свой код в новом файле; gradle.properties для первого, build.gradle для второго и так далее для настройки программы

Baby_Boy 22.01.2021 15:02
Ответ принят как подходящий

Проблема была связана с Gradle Play Publisher. Я удалил все строки, связанные с com.github.triplet.play, и теперь он строится. Надеюсь, это поможет всем, у кого также были проблемы, как и у меня.

Другие вопросы по теме