Hi all, I am new to React Native and React Native Firebase. I manage to develop a simple app which works fine on the emulator for both Android and IOS, I manage to deploy the app onto Apple test flight and test it on couple of IOS devices with no problem. However when I try to release the APK for android using:
./gradlew assembleRelease
I get the error:
Execution failed for task ':react-native-firebase:verifyReleaseResources'.
12:17:34.651 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Daemon worker Thread 4,5,main]] finished, busy: 0.0 secs, idle: 1 mins 36.223 secs
12:17:34.651 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker for ':' Thread 5,5,main]] finished, busy: 0.0 secs, idle: 1 mins 36.223 secs
12:17:34.652 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run tasks'12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':react-native-firebase:verifyReleaseResources'.
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Output: E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\node_modules\react-native-firebase\android\build\intermediates\res\merged\release\values-v28\values-v28.xml:7: error: resource android:attr/dialogCornerRadius not found.
12:17:34.654 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\node_modules\react-native-firebase\android\build\intermediates\res\merged\release\values-v28\values-v28.xml:11: error: resource android:attr/dialogCornerRadius not found.
12:17:34.655 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\node_modules\react-native-firebase\android\build\intermediates\res\merged\release\values\values.xml:958: error: resource android:attr/fontVariationSettings not found.
12:17:34.655 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\node_modules\react-native-firebase\android\build\intermediates\res\merged\release\values\values.xml:959: error: resource android:attr/ttcIndex not found.
12:17:34.655 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] error: failed linking references.
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Daemon: AAPT2 aapt2-3.2.0-4818971-windows Daemon #0
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. Run with --scan to get full insights.
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Get more help at https://help.gradle.org12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger]
12:17:34.687 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 1m 38s
12:17:34.687 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] 56 actionable tasks: 53 executed, 3 up-to-date
12:17:34.687 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #0: shutdown
12:17:34.688 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1 completed (0 worker(s) in use)
12:17:34.688 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker Thread 4: released lock on root.1
12:17:34.688 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run build'12:17:34.692 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #1: shutdown
12:17:34.692 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for file content cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileContent)
12:17:34.692 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on file content cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileContent).
12:17:34.695 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for task history cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\taskHistory)
12:17:34.695 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache taskHistory.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\taskHistory\taskHistory.bin)
12:17:34.696 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #2: shutdown
12:17:34.700 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #3: shutdown
12:17:34.701 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on task history cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\taskHistory).
12:17:34.703 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #4: shutdown
12:17:34.705 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Build Output Cleanup Cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\buildOutputCleanup)
12:17:34.706 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache outputFiles.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\buildOutputCleanup\outputFiles.bin)
12:17:34.707 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #5: shutdown
12:17:34.710 [INFO] [org.gradle.api.Project] AAPT2 aapt2-3.2.0-4818971-windows Daemon #6: shutdown
12:17:34.711 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Build Output Cleanup Cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\buildOutputCleanup).
12:17:34.716 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Java compile cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile)
12:17:34.716 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache taskJars.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile\taskJars.bin)
12:17:34.733 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache taskHistory.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile\taskHistory.bin)
12:17:34.736 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache jarAnalysis.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile\jarAnalysis.bin)
12:17:34.736 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache classAnalysis.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile\classAnalysis.bin)
12:17:34.736 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Java compile cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\javaCompile).
12:17:34.751 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 0, disk reads: 0 (avg: 0.0 secs, total: 0.0 secs)
12:17:34.752 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 27, disk reads: 27 (avg: 0.0 secs, total: 0.0 secs)
12:17:34.752 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.ResolutionResultsStoreFactory] Deleted 4 resolution results binary files in 0.002 secs
12:17:34.753 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopping 0 deployment handles
12:17:34.753 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopped deployment handles
12:17:34.753 [INFO] [org.gradle.cache.internal.DefaultPersistentDirectoryCache] VCS Checkout Cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\vcsWorkingDirs) has not been cleaned up in 0 days
12:17:34.753 [DEBUG] [org.gradle.cache.internal.DefaultCacheAccess] Cache VCS Checkout Cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\vcsWorkingDirs) was closed 0 times.
12:17:34.754 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Artifact transforms cache (C:\Users\mattm\.gradle\caches\transforms-1)
12:17:34.754 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache results.bin (C:\Users\mattm\.gradle\caches\transforms-1\metadata-1.1\results.bin)
12:17:34.754 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Artifact transforms cache (C:\Users\mattm\.gradle\caches\transforms-1).
12:17:34.758 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for file hash cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileHashes)
12:17:34.758 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache fileHashes.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileHashes\fileHashes.bin)
12:17:34.769 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache resourceHashesCache.bin (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileHashes\resourceHashesCache.bin)
12:17:34.769 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on file hash cache (E:\Users\Matt Majedi\Documents\Dev\ReactNative\scoresafeapprn\android\.gradle\4.6\fileHashes).
12:17:34.772 [DEBUG] [org.gradle.cache.internal.DefaultCacheAccess] Cache Generated Gradle JARs cache (C:\Users\mattm\.gradle\caches\4.6\generated-gradle-jars) was closed 0 times.
12:17:34.773 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for artifact cache (C:\Users\mattm\.gradle\caches\modules-2)
12:17:34.773 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-metadata.bin (C:\Users\mattm\.gradle\caches\modules-2\metadata-2.53\module-metadata.bin)
12:17:34.773 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-artifact.bin (C:\Users\mattm\.gradle\caches\modules-2\metadata-2.53\module-artifact.bin)
12:17:34.773 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-artifacts.bin (C:\Users\mattm\.gradle\caches\modules-2\metadata-2.53\module-artifacts.bin)
12:17:34.773 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-versions.bin (C:\Users\mattm\.gradle\caches\modules-2\metadata-2.53\module-versions.bin)
12:17:34.773 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on artifact cache (C:\Users\mattm\.gradle\caches\modules-2).
12:17:34.776 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] The daemon has finished executing the build.
12:17:34.827 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientInputForwarder] Dispatching close input message: org.gradle.launcher.daemon.protocol.CloseInput@4d8c9558
12:17:34.827 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 15: dispatching class org.gradle.launcher.daemon.protocol.CloseInput
12:17:34.827 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClient] Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':react-native-firebase:verifyReleaseResources'.] from daemon DaemonInfo{pid=2776, address=[ed35cb90-daf7-4002-8a74-07e793a9b082 port:50914, addresses:[/127.0.0.1, /0:0:0:0:0:0:0:1]], state=Idle, lastBusy=1552910423041, context=DefaultDaemonContext[uid=e5e8886a-60a1-43b7-b0fe-d1327c8a32c3,javaHome=C:\Program Files\Java\jdk1.8.0_181,daemonRegistryDir=C:\Users\mattm\.gradle\daemon,pid=2776,idleTimeout=10800000,daemonOpts=-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=windows-1252,-Duser.country=GB,-Duser.language=en,-Duser.variant]} (build should be done).
12:17:34.827 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: dispatching class org.gradle.launcher.daemon.protocol.Finished
12:17:34.828 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: connection stop
ios/Podfile:# N/A
AppDelegate.m:// N/A
android/build.gradle:// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 16
compileSdkVersion = 27
targetSdkVersion = 26
supportLibVersion = "27.1.1"
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
classpath 'com.google.gms:google-services:4.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '4.4'
distributionUrl = distributionUrl.replace("bin", "all")
}
android/app/build.gradle:apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = false
android {
compileSdkVersion 28
//buildToolsVersion '28.0.3'
buildToolsVersion '28.0.3'
defaultConfig {
applicationId "com.scoresafeapprn"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
signingConfigs {
release {
//if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file("my-release-key.keystore")
storePassword ""
keyAlias "my-key-alias"
keyPassword ""
//}
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
signingConfig signingConfigs.release
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
}
dependencies {
implementation project(':react-native-firebase')
implementation project(':react-native-firebase')
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:+'
implementation 'com.facebook.react:react-native:+'
// From node_modules
// Firebase dependencies
implementation project(':react-native-firebase')
implementation 'com.google.android.gms:play-services-base:16.0.1'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply plugin: 'com.google.gms.google-services'
android/settings.gradle:rootProject.name = 'scoresafeapprn'
include ':react-native-firebase'
project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android')
include ':react-native-firebase'
project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android')
include ':app'
MainApplication.java:package com.scoresafeapprn;
import android.app.Application;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.facebook.react.ReactApplication;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.RNFirebasePackage;
import io.invertase.firebase.messaging.RNFirebaseMessagingPackage; // <-- Add this line
import io.invertase.firebase.notifications.RNFirebaseNotificationsPackage; // <-- Add this line
import java.util.Arrays;
import java.util.List;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNFirebasePackage(),
new RNFirebaseMessagingPackage(),
new RNFirebaseNotificationsPackage()
);
}
@Override
protected String getJSMainModuleName() {
return "index";
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
AndroidManifest.xml:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.scoresafeapprn">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE" />
<application
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<service android:name="io.invertase.firebase.messaging.RNFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service android:name="io.invertase.firebase.messaging.RNFirebaseBackgroundMessagingService" />
</application>
</manifest>
React Native version:React Native Firebase library version:TypeScript?ExpoKit?
Think react-native-firebase is great? Please consider supporting the project with any of the below:
React Native Firebase and Invertase on TwitterAny help on this would be much appreciated!
Does removing the duplicate implementation/include in the build.gradle and settings.gradle file make any difference?
I don't think you need any of that in the settings.gradle file either. You should only need the implementation project(':react-native-firebase') once in the build.gradle to include the dependency (it's included 3 times).
If that fails, try forcing the version of appcompat to your compiled sdk version rather than using +, e.g:
implementation 'com.android.support:appcompat-v7:27.0.0'
Thanks @davidwadge , I managed to resolve this. the problem was the inconsistency of compileSdkVersion and buildToolsVersion between the main gradle file and the firebase one. Apparently, this was introduced as part of an upgrade.
But thanks for your post.