cordova-plugin-firebase icon indicating copy to clipboard operation
cordova-plugin-firebase copied to clipboard

Can't build on android anymore

Open SandroMoretti opened this issue 5 years ago • 59 comments

I was developing my application normally. I was able to build it 10 times today successfully. However, I was compile again and now I can no longer run when the firebase plugin is in the project.

If I remove the plugin the project run.

Im using [email protected] (can't update to 8.0.0)

The following build error occurs:

:app:processDebugResources/home/sandro/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/c9104c96e21bf9c9613f4661f4e5d49e/res/values/values.xml:246:5-69: AAPT: error: resource android:attr/fontVariationSettings not found.
    
/home/sandro/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/c9104c96e21bf9c9613f4661f4e5d49e/res/values/values.xml:246:5-69: AAPT: error: resource android:attr/ttcIndex not found.
    
/home/user/my_cordova_project/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:244: error: resource android:attr/fontVariationSettings not found.
/home/user/my_cordova_project/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:244: error: resource android:attr/ttcIndex not found.
error: failed linking references.

Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt
	at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
	at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
	at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
	at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
	at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
	at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
	at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
	at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
	at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
	at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
	at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
	at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
	at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
	at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
	... 48 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
	at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:179)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	... 1 more
Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
	at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463)
	at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415)
	at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
	at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

FAILURE: Build failed with an exception.

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

Anyone else having the same problem? Thanks.

SandroMoretti avatar Jun 18 '19 14:06 SandroMoretti

have been fighting the same issue for three days already

igorkurochka avatar Jun 18 '19 14:06 igorkurochka

Hello @SandroMoretti,

I have been fighting all the day with that issue... My project cannot be updated to Cordova 8 either so I even decided to port to Ionic 4 (it was done with Ionic 3). So, with Cordova 8 and Ionic 4 after many errors I have arrived to the same point... The error that you have posted is related to Android 28, and the reason is because this library uses 'com.google.firebase:firebase-X:+' as a dependency and yesterday Firebase did a breaking release FB June 17 which forces to use Android 28... I have been playing with dependencies to see if I could workaround it but always got another error...

Any help would be appreciated, thanks!

gkhristian avatar Jun 18 '19 14:06 gkhristian

Same here. I think It's because the plugin depends on com.google.firebase:firebase-auth:+ which just updated:

https://developers.google.com/android/guides/releases

Dropped support for API <28

sshipsey avatar Jun 18 '19 14:06 sshipsey

Same problem too! I can't build on android anymore.

soramister avatar Jun 18 '19 15:06 soramister

I am having the same problem, now I cannot compile the app and get this error:

:app:processDebugResources
C:\Users\mmzep\.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/fontVariationSettings not found.

C:\Users\mmzep\.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/ttcIndex not found.

C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: error: resource android:attr/fontVariationSettings not found.
C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: error: resource android:attr/ttcIndex not found.
error: failed linking references.

Failed to execute aapt

com.android.ide.common.process.ProcessException: Failed to execute aapt

        at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
        at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
        at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
        at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

I'm on a really tight deadline and this breaks my project since it relies entirely on firebase.

tecmovilapp avatar Jun 18 '19 15:06 tecmovilapp

looks like this recipe helped me https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment-503041641

igorkurochka avatar Jun 18 '19 15:06 igorkurochka

Same problem here. I've tried to update all dependencies with requirements at https://firebase.google.com/support/release-notes/android#20180523, and cordova android to 8.0.0, but with no success. When I remove cordova-plugin-firebase, it works. Here the error I get:

Dependency failing: com.google.android.gms:play-services-tagmanager-api:15.0.2 -> com.google.android.gms:play-services-m
  easurement-base@[15.0.2], but play-services-measurement-base version was 15.0.4.

  The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
  ifact with the issue.
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.firebase:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]

So can't build with firebase.

ghost avatar Jun 18 '19 15:06 ghost

This morning I'm already sweating as I saw the gradle downloading new maven files and to my expectations it all went boom!

heidji avatar Jun 18 '19 16:06 heidji

Same here. any solution please

Manaspaul623 avatar Jun 18 '19 16:06 Manaspaul623

Solution I've taken from this comment https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment-503041641

  1. put build-extras.gradle in your project root
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. put this hook code in your scripts/copy_build_extra.js
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. configure hook in config.xml inside android platform
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. reinstall platform to activate the hook
cordova platform rm android
cordova platform add android

worked for me, hope will do for you too

igorkurochka avatar Jun 18 '19 17:06 igorkurochka

this is the best solution, with less "hacks" to do: https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment-503135862 (requires cordova-android@8)

dann95 avatar Jun 18 '19 17:06 dann95

Thank you @igorkurochka , really work again.

PS: I'm using cordova 6.5 and Android 7.1.4, so don't need to update to android 8 like dann told.

SandroMoretti avatar Jun 18 '19 17:06 SandroMoretti

@SandroMoretti i guess is good if you can update, do it.. cause this plugin will generate more headaches, since april im using a fork of the plugin, to solve a build issue, i was using cordova-android@7, seems some library that is dependency of this plugin is no more suporting API < 28, so its good to use cordova-android@8 that uses API 28...

dann95 avatar Jun 18 '19 18:06 dann95

@dann95 , I know. I tried update. I don't know why, but I can't update my cordova.

Npm just install cordova 6.5 here. Maybe is my outdated system (ubuntu 14). Someday I will reserve my day to upgrade my OS then I update cordova and android platform. Thank you.

SandroMoretti avatar Jun 18 '19 18:06 SandroMoretti

your Cordova cli is installed globally, you must remove it globally. "-g" xD

dann95 avatar Jun 18 '19 18:06 dann95

@SandroMoretti i guess is good if you can update, do it.. cause this plugin will generate more headaches, since april im using a fork of the plugin, to solve a build issue, i was using cordova-android@7, seems some library that is dependency of this plugin is no more suporting API < 28, so its good to use cordova-android@8 that uses API 28...

Before cordova-plugin-firebase directory was 93,9 MB, now 1,30 MB. Before cordova-plugin-cocoapod-support was not installed, now it is.

Same for you also?

pegasx avatar Jun 18 '19 18:06 pegasx

@pegasx cocoapod-support not installed for me.

SandroMoretti avatar Jun 18 '19 19:06 SandroMoretti

@pegasx cocoapod-support not installed for me.

Sorry, you did not install dpa99c's solution. So question is for @dann95.

Before cordova-plugin-firebase directory was 93,9 MB, now 1,30 MB. Before cordova-plugin-cocoapod-support was not installed, now it is.

Same for you also?

pegasx avatar Jun 18 '19 19:06 pegasx

image

dann95 avatar Jun 18 '19 20:06 dann95

cocoapod must be for "swift" it has been installed in my linux too, will investigate why

dann95 avatar Jun 18 '19 20:06 dann95

about the size, idk what was the size before, but it seems to work.

dann95 avatar Jun 18 '19 20:06 dann95

this solution worked for me, but I had to create a new project and copy all my files into that new project because using the steps in the link made more problems on the existing repository ...

heidji avatar Jun 18 '19 22:06 heidji

Thank you @igorkurochka , working again.

bipoza avatar Jun 19 '19 08:06 bipoza

@igorkurochka Thanks for your fix. It works on my end too. My understanding is that the below list is the dependencies of the firbase plugin. Shouldn't these be defined by the plugin itself? Adding these to the android project using an external cordova hook looks like a workaround, but not a solution. Is there a chance to create a pull request to get the exact versions of the dependencies defined in the master repo? Thanks.

def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

uifox avatar Jun 19 '19 09:06 uifox

@SandroMoretti True is that @igorkurochka fixed the issue but this is more of a workaround and not a solution. The versions of the plugin's dependencies should be defined by the plugin and not the cordova app. This fix may become unreliable, should the dependencies of the plugin change.

I suggest reopening this issue.

uifox avatar Jun 19 '19 09:06 uifox

Solution I've taken from this comment #1081 (comment)

  1. put build-extras.gradle in your project root
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. put this hook code in your scripts/copy_build_extra.js
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. configure hook in config.xml inside android platform
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. reinstall platform to activate the hook
cordova platform rm android
cordova platform add android

worked for me, hope will do for you too

Hi @igorkurochka , I'm still facing this type of issue, can you please help me in that platforms/android/app/src/main/java/org/apache/cordova/firebase/FirebasePlugin.java:9: error: cannot find symbol import android.support.v4.app.NotificationManagerCompat;

pankajPizone avatar Jun 19 '19 13:06 pankajPizone

@pankajPizone have you deleted the gradle cache?

rm -rf ~/.gradle/

dann95 avatar Jun 19 '19 13:06 dann95

@dann95 from android folder?

pankajPizone avatar Jun 19 '19 13:06 pankajPizone

the "~" means your home , so it will clear something like

/home/myusername/.gradle/

dann95 avatar Jun 19 '19 13:06 dann95

OK @dann95 i'm trying it

pankajPizone avatar Jun 19 '19 13:06 pankajPizone