构建错误-Ionic Cordova在安卓上失败

7
我在运行命令“ionic cordova build android --stacktrace”时遇到以下错误:
:generateDebugResources
:mergeDebugResources

:processDebugManifest

:processDebugResources
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings
 FAILED
ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:ttcIndex

I am using following tools on Window's:
 Editor : VScode

Ionic: C:\Users\xyz>ionic -version
3.19.1
Npm as packagemanager

项目属性:
target=android-26
cordova.system.library.1=com.google.android.gms:play-services-analytics:+
cordova.system.library.2=com.facebook.android:facebook-android-sdk:4.+
cordova.gradle.include.1=cordova-plugin-appsflyer-sdk/customerapp-cordovaAF.gradle
cordova.gradle.include.2=twitter-connect-plugin/customerapp-twitter.gradle
cordova.system.library.3=com.android.support:support-v4:26.+
cordova.system.library.4=com.android.support:appcompat-v7:26.+
cordova.system.library.5=com.android.support:support-v4:24.1.1+
cordova.system.library.6=com.android.support:support-v4:+
android.library.reference.1=CordovaLib
8个回答

12

我需要完成以上两个答案中的内容:

platforms/android/phonegap-plugin-barcodescanner中:

搜索compile 'com.android.support:support-v4:+,并替换为compile 'com.android.support:support-v4:27+'

platforms/android中:

搜索cordova.system.library.2=com.android.support:support-v4:+,并替换为cordova.system.library.2=com.android.support:support-v4:27.1.0

希望对您有所帮助。


这个对我也有效。 - Greg Foote

3

我在ionic论坛上找到了这条消息:https://forum.ionicframework.com/t/android-build-broken-after-gradle-dependencies-update-execution-failed-for-task-processdebugresources-com-android-ide-common-process-processexception-failed-to-execute-aapt/109982/134。对我有用的建议是:“我已经解决了,我的问题出在cordova-plugin-file-opener2插件上。
在“plugins”文件夹和“node_modules”文件夹中的cordova-plugin-file-opener2plugin.xml文件中将com.android.support:support-v4:+更改为com.android.support:support-v4:23+
然后在platforms/androidproject.properties文件中做同样的更改。
但是我的插件是background-geolocation,实际上我不认为我需要在我的project.properties文件中进行修复。


我可能听起来很天真,因为我是这样的。那么,在将平台(Android)添加到Ionic项目之后,您需要寻找它们吗?还是在此之前就需要寻找它们? - Kumar
我可能听起来很天真,所以在给Ionic项目添加平台(android)之后或之前需要寻找它们?在添加平台(android)之前,我没有看到任何插件与'com.android.support:support-v4:+'一起。在添加平台(android)之后,我发现以下插件有它们:cordova-plugin-camera,cordova.plugins.diagnostic,de.appplant.cordova.plugin.local-notification。我按照你的建议进行了更改,但它仍然无法构建。有什么建议吗?感谢您的帮助。 - Kumar

3

我的问题需要类似上面的修复,但是它在de.appplant.cordova.plugin.local-notification插件中。我将'com.android.support:support-v4:+'更改为'com.android.support:support-v4:23+',然后移除并添加了Android平台,它就构建成功了。但是,我的build-extras.gradle中有一个额外的大括号‘}’也必须被删除。


如果我删除并添加了Android,AndroidManifest文件不会再次添加,从而导致构建失败。还有其他建议吗? - Kumar
非常感谢!对于我的Ionic应用程序,这个方法很有效(正如他在答案中所说,对我来说关键是删除并重新添加android平台)。 - mkimmet

2

在我的情况下,问题出现在条形码扫描器插件中。尝试删除和重新添加该插件并没有起作用,最终通过在文件'platform/android/phonegap-plugin-barcodescanner/{projectName}-barcodescanner'中将'com.android.support:support-v4:+'更改为'com.android.support:support-v4:27+'来解决了问题。我不明白的是,项目昨天还完美地工作,24小时内发生了什么导致这个问题出现...


1
我遇到了同样的问题,我所做的是:
  1. 清除构建目录
    • cordova clean
  2. 在build.gradle文件中,在android->defaultConfig下添加multiDexEnabled
    • "your project\platforms\android\app\build.gradle"
    • multiDexEnabled true
  3. 更改build.gradle文件中的"com.android.support"依赖项
    • com.android.support:support-v4:+ => com.android.support:support-v4:23+
  4. 浏览插件文件夹,并查看所有的"plugins.xml"并替换:
    • com.android.support:support-v4:+ => com.android.support:support-v4:23+
  5. 更改"platforms\android\project.properties"下的project.properties
    • cordova.system.library.4=com.android.support:support-v4:23+
  6. 运行"ionic cordova run build"
无法合并dex 清洁安装 错误的命名空间/版本

.

android {

    defaultConfig {
        multiDexEnabled true
        versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode"))
        applicationId privateHelpers.extractStringFromManifest("package")

        if (cdvMinSdkVersion != null) {
            minSdkVersion cdvMinSdkVersion
        }
    }
}

0

昨天我也突然遇到了同样的问题。它是随机发生的,但从阅读周围的信息来看,似乎与更新有关,正如@cpro90所提到的那样。然而,我尝试了一下,但找不到需要进行手动更改的地方。

最终,我确定问题是由我的cordova-plugin-crosswalk-webview插件引起的。在Github上,我今天早上在插件存储库中找到了这个问题,并且到午餐时已经有超过520次浏览。

@UNUMObile建议在build.gradle文件中全局强制使用早期版本:

    configurations.all {
       resolutionStrategy.force 'com.android.support:support-v4:24.0.0'
    }

这对我立即起作用,可能也会帮助其他插件的依赖关系出现问题,例如'com.android.support:support-4:<28。新版本28似乎是问题所在。

希望这能帮助某人向前迈进。


1
抱歉打扰您,但是在哪里放置这个东西?更具体地说,我正在尝试在Ionic的Pro云构建器中构建。似乎对任何依赖项的gradle文件进行任何更改都不起作用,因为未修改的版本将被远程构建系统拉下来。还有其他人遇到这个问题吗? - kimsal
1
在文件顶部的buildscript段落右花括号后添加straight。 - Chris Scutt

0

在插件.xml中用固定版本替换'com.android.support:support-v4:+''com.android.support:support-v4:27+'对我们没有起作用 - Cordova Crosswalk至少更新了一个支持库到版本28.0.0-alpha1

最终,强制为每个依赖项使用固定版本的支持库可能会解决问题。

configurations.all {
resolutionStrategy {
    eachDependency { DependencyResolveDetails details ->
        if (details.requested.group == 'com.android.support') {
            details.useVersion "27.1.0"
        }
    }
}

0

我在搜索的主题指定路径中没有找到“com.android.support:support-v4:+”,最后我尝试在所有文件夹中查找,但仍未找到。

platforms/android/phonegap-plugin-barcodescanner.gradle

在我的情况下,插件是barcodescanner,在你的情况下可能是其他插件。 然后我按照信息进行了替换,使用"'com.android.support:support-v4:27+",它就可以工作了。

昨天它是否完美地工作,我感到很惊讶,今天我只改变了一个文本,就出现了这个错误...在构建过程中,我意识到发生了一些下载,我相信是更新导致了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接