Ionic 上的任务“:processDebugResources”执行失败

Posted

技术标签:

【中文标题】Ionic 上的任务“:processDebugResources”执行失败【英文标题】:Execution failed for task ':processDebugResources' on Ionic 【发布时间】:2016-11-15 09:28:10 【问题描述】:

我对 Ionic 命令有疑问:Ionic build android

Here 我正在遵循的教程 Salesforce 创建连接到 Salesforce API 的应用程序。 (联系方式等)。

现在,当我构建 android 时,我遇到了这个问题:

:processDebugResources
/home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/manifests/full/debug/AndroidManifest.xml:32: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/sf__icon').

 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugResources'.

> 
com.android.ide.common.internal.LoggedErrorException: Failed to run command:

    /usr/local/android-sdk-linux/build-tools/25.0.0/aapt package -f --no-crunch -I /usr/local/android-sdk-linux/platforms/android-23/android.jar -M /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/manifests/full/debug/AndroidManifest.xml -S /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/res/debug -A /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/assets/debug -m -J /home/r.**/Workspace/IonicApp/platforms/android/build/generated/source/r/debug -F /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/res/resources-debug.ap_ --debug-mode --custom-package com.ionicframework.ionicapp508454 -0 apk --output-text-symbols /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/symbols/debug

  Error Code:

    1

  Output:

    /home/r.**/Workspace/IonicApp/platforms/android/build/intermediates/manifests/full/debug/AndroidManifest.xml:32: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/sf__icon').

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3.305 secs

Error: /home/r.**/Workspace/IonicApp/platforms/android/gradlew: Command failed with exit code 1

我重新启动教程 2 次,我仍然有这个错误。可能是因为我做的是Android App,而不是教程中的ios

这个文件缺少什么,它应该在哪里?

如果您需要 XML:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ionicframework.ionicapp508454"
    android:hardwareAccelerated="true"
    android:versionCode="18"
    android:versionName="0.0.1" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="23" />

    <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="true"
        android:xlargeScreens="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission
        android:name="com.ionicframework.ionicapp508454.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.ionicframework.ionicapp508454.permission.C2D_MESSAGE" />

    <application
        android:name="com.salesforce.androidsdk.phonegap.app.HybridApp"
        android:hardwareAccelerated="true"
    android:icon="@drawable/sf__icon"
        android:label="@string/app_name"
        android:manageSpaceActivity="com.salesforce.androidsdk.ui.ManageSpaceActivity" >
        <activity
            android:name="com.adobe.phonegap.push.PushHandlerActivity"
            android:exported="true" />

        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />

                <category android:name="com.ionicframework.ionicapp508454" />
            </intent-filter>
        </receiver>

        <service
            android:name="com.adobe.phonegap.push.GCMIntentService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
        <service
            android:name="com.adobe.phonegap.push.PushInstanceIDListenerService"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
            </intent-filter>
        </service>
        <service
            android:name="com.adobe.phonegap.push.RegistrationIntentService"
            android:exported="false" />

        <activity
            android:name="com.salesforce.androidsdk.phonegap.ui.SalesforceDroidGapActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.google.android.gms.common.api.GoogleApiActivity"
            android:exported="false"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

</manifest>

一些信息:

我创建了一个 Android 应用程序。

Cordova-android 是 5.0.0 版本,因为 6.0.0 与 api salesforce 存在不匹配问题。

我是 Ionic/Cordova 和移动开发的初学者。也许解决方案是显而易见的。

【问题讨论】:

错误输出表明构建只是由于缺少图标资源而失败:No resource found that matches the given name (at 'icon' with value '@drawable/sf__icon'). 可能是命名问题,您是否不小心添加了第二个下划线或者图标不存在? ;) 确实,但是这个文件应该在哪里?我从不使用 XML,所以我不知道他在哪里寻找这个文件。我将粘贴另一个随机图标,以便能够运行“Ionic build” 啊好吧 - 所以@drawable/ 符号在你的 Android 项目中引用了res/drawable,所以尝试一下最简单的方法可能是在这个文件夹中放置一个虚拟图标.. 但是只是检查了 Salesforce SDK 存储库,确实在他们的 XML 文件中引用了该文件,但没有包含图标……虽然很奇怪! 我的错,公平地说,Salesforce 已经包含了图标,你可以在这里找到它们:github.com/forcedotcom/SalesforceMobileSDK-CordovaPlugin/tree/… 所以也许检查插件是否安装正确(也许删除它并重新添加它?)。当然,插件本身仍然可能包含错误。您也可以在尝试另一个构建之前尝试运行一次cordova prepare,也可以传输图标! 我在 res 中没有 drawable 文件夹,我在 /plugins/com.salesforce/src/android/libs/salesforceSDK/res/drawable 中有一个 Drawable 文件,我在其中创建了一个 sf__icon。我把它复制粘贴到你说的地方,这是解决方案的开始。另一个丢失文件的错误消息更改。谢谢 OClyde,它是 res/drawable! 【参考方案1】:

错误输出表明构建只是由于缺少图标资源而失败:未找到与给定名称匹配的资源(在“图标”处,值为“@drawable/sf__icon”)。

SalesforceSDK 包含这些文件,但它们似乎没有正确添加到 Android 项目中:

https://github.com/forcedotcom/SalesforceMobileSDK-CordovaPlugin/tree/master/src/android/libs/SalesforceSDK/res

虽然复制粘贴可能会解决问题,但仍然想知道为什么插件没有按预期在 res/drawable 文件夹中添加可绘制对象!

【讨论】:

这是解决这个问题的方法。谢谢 OClyde

以上是关于Ionic 上的任务“:processDebugResources”执行失败的主要内容,如果未能解决你的问题,请参考以下文章

任务执行失败:processDebugResources [ Cordova / Ionic ]

[转]Ionic系列——CodePen上的优秀Ionic_Demo

ionic build android failure - 任务 processDebugResources 执行失败

IOS 10 或 11 上的 Ionic 3 标头高度

白屏死机 - Android 上的 Ionic 2

没有 Ionic 的设备上的 Cordova 热重载