升级 cordova-android 10 后构建失败

2024-04-22

当我升级的时候[email protected] /cdn-cgi/l/email-protection to [email protected] /cdn-cgi/l/email-protection我运行时遇到构建问题cordova build android --release --buildconfig=build.json

问题:

* What went wrong:
Some problems were found with the configuration of task ':app:processReleaseGoogleServices' (type 'GoogleServicesTask').
  - In plugin 'com.google.gms.googleservices.GoogleServicesPlugin' type 'com.google.gms.googleservices.GoogleServicesTask' field 'intermediateDir' without corresponding getter has been annotated with @OutputDirectory.
    
    Reason: Annotations on fields are only used if there's a corresponding getter for the field.
    
    Possible solutions:
      1. Add a getter for field 'intermediateDir'.
      2. Remove the annotations on 'intermediateDir'.
    
    Please refer to https://docs.gradle.org/7.1.1/userguide/validation_problems.html#ignored_annotations_on_field for more details about this problem.
  - In plugin 'com.google.gms.googleservices.GoogleServicesPlugin' type 'com.google.gms.googleservices.GoogleServicesTask' field 'packageNameXOR1' without corresponding getter has been annotated with @Input.
    
    Reason: Annotations on fields are only used if there's a corresponding getter for the field.
    
    Possible solutions:
      1. Add a getter for field 'packageNameXOR1'.
      2. Remove the annotations on 'packageNameXOR1'.
    
    Please refer to https://docs.gradle.org/7.1.1/userguide/validation_problems.html#ignored_annotations_on_field for more details about this problem.
  - In plugin 'com.google.gms.googleservices.GoogleServicesPlugin' type 'com.google.gms.googleservices.GoogleServicesTask' field 'packageNameXOR2' without corresponding getter has been annotated with @Input.
    
    Reason: Annotations on fields are only used if there's a corresponding getter for the field.
    
    Possible solutions:
      1. Add a getter for field 'packageNameXOR2'.
      2. Remove the annotations on 'packageNameXOR2'.
    
    Please refer to https://docs.gradle.org/7.1.1/userguide/validation_problems.html#ignored_annotations_on_field for more details about this problem.
  - In plugin 'com.google.gms.googleservices.GoogleServicesPlugin' type 'com.google.gms.googleservices.GoogleServicesTask' field 'quickstartFile' without corresponding getter has been annotated with @InputFile, @Optional.
    
    Reason: Annotations on fields are only used if there's a corresponding getter for the field.
    
    Possible solutions:
      1. Add a getter for field 'quickstartFile'.
      2. Remove the annotations on 'quickstartFile'.
    
    Please refer to https://docs.gradle.org/7.1.1/userguide/validation_problems.html#ignored_annotations_on_field for more details about this problem.
  - In plugin 'com.google.gms.googleservices.GoogleServicesPlugin' type 'com.google.gms.googleservices.GoogleServicesTask' field 'searchedLocation' without corresponding getter has been annotated with @Input.
    
    Reason: Annotations on fields are only used if there's a corresponding getter for the field.
    
    Possible solutions:
      1. Add a getter for field 'searchedLocation'.
      2. Remove the annotations on 'searchedLocation'.
    
    Please refer to https://docs.gradle.org/7.1.1/userguide/validation_problems.html#ignored_annotations_on_field for more details about this problem.

我已经尝试过:

  • 更新了一些过时的依赖项
  • Remove cordova-android-play-services-gradle-release cordova-android-support-gradle-release cordova-support-google-services
  • Add in config.xml
    <preference name="GradlePluginGoogleServicesEnabled" value="true" /> and
    <preference name="GradlePluginGoogleServicesVersion" value="4.3.8" />
    但是当我这样做时,我又遇到了另一个错误:
* What went wrong:
A problem occurred evaluating project ':app'.
> Failed to apply plugin 'com.google.gms.google-services'.
   > Cannot add extension with name 'googleServices', as there is an extension already registered with that name.

离子 CLI:5.4.16
离子框架:离子角3.9.8
@ionic/app-scripts:3.2.4

科尔多瓦 CLI:10.0.0
Cordova 平台:android 10.1.1

NodeJS:12.19.0
Android SDK工具:26.1.1


非常感谢您的问题和问题描述,因为它帮助我从 cordova-android 9.1.0 升级到 10.1.1 :-)。

我想我可以解决你的问题。抛出这个错误是因为谷歌服务插件注册了两次(应用插件:'com.google.gms.google-services')在 gradle 文件中,例如:platforms/android/app/build.gradle。您只需评论/删除这些导入之一。

因为每次手动清理文件非常烦人,所以我创建了一个 bash 脚本(=在 Mac OS 上工作),它自动注释第二次导入:修复android.sh

#!/usr/bin/env bash

echo "Executing fix_android.sh"

## comment duplicate import of com.google.gms.google-services plugin
#file=$(pwd)"/platforms/android/app/build.gradle"
file="platforms/android/app/build.gradle"
#echo ${file}
from="apply plugin: 'com.google.gms.google-services'"
to="\/\/apply plugin: 'com.google.gms.google-services'"

if [ -f "$file" ]; then
  if grep -lr "$to" "$file"; then
      echo "File already corrected!"
  else
      change=`sed "s/$from/$to/" < "$file"`
      echo "$change" > "$file"
      #echo "$change"
      echo "Commented duplicate import!"
  fi
else
  echo ${file}" not found!"
  ls -al platforms/android/app
fi

为了在构建之前自动启动脚本,我在中使用离子构建脚本/挂钩包.json:

"scripts": {
    ...
    "ionic:build:before": "./scripts/fix_android.sh",
    "ionic:build:after": "",
    ...

This is my actual project & system configuration enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

升级 cordova-android 10 后构建失败 的相关文章

随机推荐