react-native-firebase
react-native-firebase copied to clipboard
react-native android build fails with package-aware-r.txt error
Issue
Describe your issue here
getting below error while executing android build after upgrading gradle
version to 7.0.4
, although it is working fine with gradle
version 4.0.1
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':react-native-firebase_crashlytics:generateDebugRFile'.
> A failure occurred while executing com.android.build.gradle.internal.res.GenerateLibraryRFileTask$GenerateLibRFileRunnable
> /Users/xyz/projects/xyz/node_modules/@react-native-firebase/app/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':react-native-firebase_analytics:generateDebugRFile'.
> A failure occurred while executing com.android.build.gradle.internal.res.GenerateLibraryRFileTask$GenerateLibRFileRunnable
> /Users/xyz/projects/xyz/node_modules/@react-native-firebase/app/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================
* Get more help at https://help.gradle.org
Project Files
Javascript
Click To Expand
package.json
:
"dependencies": {
"react-native": "0.63.4",
// ......
"@react-native-firebase/analytics": "15.1.1",
"@react-native-firebase/app": "15.1.1",
"@react-native-firebase/crashlytics": "15.1.1",
"@react-native-firebase/dynamic-links": "15.1.1",
"@react-native-firebase/messaging": "15.1.1",
"@react-native-firebase/perf": "15.1.1",
"@react-native-firebase/remote-config": "15.1.1",
// ....
}
firebase.json
for react-native-firebase v6:
# N/A
iOS
Click To Expand
ios/Podfile
:
- [ ] I'm not using Pods
- [x] I'm using Pods and my Podfile looks like:
# N/A
AppDelegate.m
:
// N/A
Android
Click To Expand
Have you converted to AndroidX?
- [ ] my application is an AndroidX application?
- [ ] I am using
android/gradle.settings
jetifier=true
for Android compatibility? - [x] I am using the NPM package
jetifier
for react-native compatibility?
android/build.gradle
:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext {
compileSdkVersion = 31
targetSdkVersion = 31
ndkVersion = "21.4.7075529"
keystoreProperties = new Properties()
}
ext {
kotlinVersion = '1.3.72'
firebaseMessagingVersion = '20.3.0'
}
//Config for react-native-firebase
project.ext {
set('react-native', [
versions: [
android : [
minSdk : 22,
targetSdk : 31,
compileSdk: 31,
buildTools: "31.0.0",
ndkVersion :"21.4.7075529"
],
firebase: [
bom: "30.2.0"
],
],
])
}
// .......
buildscript {
ext.kotlin_version = "1.5.20"
ext.supportLibVersion = "25.3.0"
repositories {
jcenter()
google()
mavenCentral()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:1.5.20"
classpath 'com.android.tools.build:gradle:7.0.4'
classpath 'com.google.gms:google-services:4.3.12'
classpath 'com.google.firebase:perf-plugin:1.3.1'
// classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.+'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.0'
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 31
buildToolsVersion '31.0.0'
}
}
}
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "31.0.0"
}
}
}
}
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url ("$rootDir/../node_modules/react-native/android")
}
maven {
url 'https://maven.google.com/'
name 'Google'
}
maven {
// Local Maven repo containing AARs with JSC library built for Android
url ("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}
}
android/app/build.gradle
:
def jscFlavor = 'org.webkit:android-jsc:+'
// ...........
project.ext.react = [
entryFile: "index.js",
// whether to bundle JS and assets in debug mode
bundleInAlphaDebug : false,
// whether to bundle JS and assets in release mode
bundleInAlphaRelease: true,
// whether to bundle JS and assets in release mode
bundleInGammaRelease: true,
enableHermes: true
]
// ....
android {
dexOptions {
javaMaxHeapSize "2g"
}
ndkVersion rootProject.ext.ndkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion "31.0.0"
defaultConfig {
applicationId "xyz"
minSdkVersion 22
targetSdkVersion 30
multiDexEnabled true
versionCode 351
versionName "13.2.1"
resValue "string", "build_config_package", "xyz"
resValue "string", "ktwo", "\"${project.env.get("FACEBOOK_APP_ID")}\""
}
// ......
}
// .....
def multidex_version = '2.0.1'
//......
dependencies {
//noinspection GradleDynamicVersion
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
implementation project(':@react-native-firebase_remote-config')
implementation project(':@react-native-firebase_perf')
// implementation project(':@react-native-firebase_messaging')
implementation project(':@react-native-firebase_crashlytics')
implementation project(':@react-native-firebase_analytics')
implementation project(':@react-native-firebase_app')
implementation project(':@react-native-firebase_dynamic-links')
implementation "androidx.multidex:multidex:$multidex_version"
implementation('androidx.work:work-runtime:2.0.1') {
exclude group: "com.google.guava", module: "listenablefuture"
}
implementation "com.google.code.gson:gson:2.8.0"
implementation 'com.google.android.play:core:1.9.0'
implementation(project(':react-native-fcm')) {
exclude group: 'com.google.firebase'
}
implementation 'com.facebook.react:react-native:0.61.0'
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.5.20"
implementation "com.google.android.gms:play-services-base:17.5.0"
implementation "com.google.android.gms:play-services-maps:17.0.0"
implementation "com.google.android.gms:play-services-auth:18.1.0"
implementation "com.google.android.gms:play-services-gcm:17.0.0"
implementation "com.google.android.gms:play-services-analytics:17.0.0"
implementation "com.google.android.gms:play-services-location:17.1.0"
implementation "com.google.android.gms:play-services-auth-api-phone:17.5.0"
implementation platform('com.google.firebase:firebase-bom:25.12.0')
implementation "com.google.firebase:firebase-core"
implementation "com.google.firebase:firebase-messaging"
implementation "com.google.firebase:firebase-config"
implementation "com.google.firebase:firebase-analytics"
implementation "com.google.firebase:firebase-perf"
implementation "com.google.firebase:firebase-crashlytics"
implementation 'com.squareup.retrofit2:converter-gson:2.8.1'
implementation 'com.squareup.retrofit2:retrofit:2.8.1'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.10.0'
implementation 'javax.annotation:javax.annotation-api:1.2'
implementation('com.google.auth:google-auth-library-oauth2-http:0.7.0') {
exclude module: 'httpclient'
}
implementation(project(':react-native-geolocation-service')) {
exclude group: 'com.google.android.gms', module: 'play-services-location'
}
implementation 'com.android.installreferrer:installreferrer:1.1'
}
android/settings.gradle
:
rootProject.name = 'xyz'
include ':@react-native-firebase_dynamic-links'
project(':@react-native-firebase_dynamic-links').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/dynamic-links/android')
include ':@react-native-firebase_remote-config'
project(':@react-native-firebase_remote-config').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/remote-config/android')
include ':@react-native-firebase_perf'
project(':@react-native-firebase_perf').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/perf/android')
include ':@react-native-firebase_messaging'
project(':@react-native-firebase_messaging').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/messaging/android')
include ':@react-native-firebase_crashlytics'
project(':@react-native-firebase_crashlytics').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/crashlytics/android')
include ':@react-native-firebase_analytics'
project(':@react-native-firebase_analytics').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/analytics/android')
include ':@react-native-firebase_app'
project(':@react-native-firebase_app').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-firebase/app/android')
MainApplication.java
:
/// ........
import io.invertase.firebase.config.ReactNativeFirebaseConfigPackage;
import io.invertase.firebase.perf.ReactNativeFirebasePerfPackage;
import io.invertase.firebase.messaging.ReactNativeFirebaseMessagingPackage;
import io.invertase.firebase.crashlytics.ReactNativeFirebaseCrashlyticsPackage;
import io.invertase.firebase.analytics.ReactNativeFirebaseAnalyticsPackage;
import io.invertase.firebase.app.ReactNativeFirebaseAppPackage;
/// -------
public class MainApplication extends MultiDexApplication implements ReactApplication {
// .........
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new ReactNativeFirebaseDynamicLinksPackage(),
new ReactNativeFirebaseConfigPackage(),
new ReactNativeFirebasePerfPackage(),
new ReactNativeFirebaseMessagingPackage(),
new ReactNativeFirebaseCrashlyticsPackage(),
new ReactNativeFirebaseAnalyticsPackage(),
new ReactNativeFirebaseAppPackage(),
);
}
//........
AndroidManifest.xml
:
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_notification" />
<!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
notification message. See README(https://goo.gl/6BKBk7) for more. -->
<meta-data
tools:replace="android:resource"
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/primaryPurple" />
<!-- [START messaging services] -->
<service android:name="xyz/xyz"
android:enabled="true" android:exported="true">
<intent-filter android:priority="1000">
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name="com.evollu.react.fcm.InstanceIdService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
Environment
Click To Expand
react-native info
output:
System:
OS: macOS 12.4
CPU: (8) x64 Apple M1
Memory: 25.19 MB / 16.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 14.19.0 - ~/.nvm/versions/node/v14.19.0/bin/node
Yarn: 1.22.17 - ~/.nvm/versions/node/v14.19.0/bin/yarn
npm: 6.14.16 - ~/.nvm/versions/node/v14.19.0/bin/npm
Watchman: 2022.03.21.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5
Android SDK:
API Levels: 28, 29, 30, 31, 32
Build Tools: 28.0.3, 29.0.2, 30.0.2, 30.0.3, 31.0.0, 32.0.0, 33.0.0
System Images: android-32 | Google APIs ARM 64 v8a, android-32 | Google APIs Intel x86 Atom_64
Android NDK: Not Found
IDEs:
Android Studio: Not Found
Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild
Languages:
Java: 11.0.15 - /Users/princeverma/.jenv/shims/javac
Python: Not Found
npmPackages:
@react-native-community/cli: 2.9.0 => 2.9.0
react: 16.13.1 => 16.13.1
react-native: 0.63.4 => 0.63.4
react-native-macos: Not Found
npmGlobalPackages:
*react-native*: Not Found
-
Platform that you're experiencing the issue on:
- [ ] iOS
- [x ] Android
- [ ] iOS but have not tested behavior on Android
- [ ] Android but have not tested behavior on iOS
- [ ] Both
-
react-native-firebase
version you're using that has this issue:-
15.1.1
-
-
Firebase
module(s) you're using that has the issue:- "@react-native-firebase/analytics": "15.1.1",
- "@react-native-firebase/app": "15.1.1",
- "@react-native-firebase/crashlytics": "15.1.1",
- "@react-native-firebase/dynamic-links": "15.1.1",
- "@react-native-firebase/messaging": "15.1.1",
- "@react-native-firebase/perf": "15.1.1",
- "@react-native-firebase/remote-config": "15.1.1",
-
Are you using
TypeScript
?-
N
-
- 👉 Check out
React Native Firebase
andInvertase
on Twitter for updates on the library.
Same issue @prince-housing did you figure anything out?
@prince-housing that is one of the most worrisome set of gradle files I've ever seen!
You are depending directly on react-native-firebase in gradle, defeating auto-linking, you are directly specifying a messaging dependency in firebase and a firebase bom, defeating all compatibility with react-native-firebase versions (there is no way bom 25 is compatible with react-native-firebase v15+, which requires bom 30+)
Basically, that configuration is not supportable in any way and I would very carefully go about updating dependencies to current and removing as much direct configuration from gradle files and MainApplication as possible, since auto-linking and the react-native modules themselves expect to drive them in their gradle files.
Similarly, the react-native version is 0.63.4 and as that's about 2 years old at this point, with toolchain versions about 2.5 years old (from slightly delayed adoption in react-native then freezing them when the 0.63 release branch was cut) I would just say they are likely not compatible.
Best course is to use https://react-native-community.github.io/upgrade-helper/ to move one react-native minor at a time (63 -> 64, 64 -> 65 etc) adopting the changes from their template in gradle version and gradle plugin version until you get to at least 67
Then you'll have a build with much more modern toolchains that are compatible with each other. At root this will likely be an incompatibility between the gradle and the gradle plugin versions, possibly combined with a need to npx react-native-clean-project
Either way, this is not something I reproduce unfortunately, and in the absence of a reproduction I won't be able to help. I reproduce success all the time using https://github.com/mikehardy/rnfbdemo/blob/main/make-demo.sh
I think this was the version that was demonstrating success about the time of react-native 0.63, if you change the npx init
line to have --version=0.63.2
maybe it will work https://github.com/mikehardy/rnfbdemo/commit/a3138029cd2c163d6fca49030c09b054a9356787