Failed to resolve 'com.google.firebase:firebase-messaging:11.0.4' in Android Studio 2.3.3
Asked Answered
S

13

10

I want to Set up a firebase Cloud Messaging Client App on Android studio, I am using latest version of Android studio(2.3.3) and my android SDK is fully updated.

Here is my project gradle file:

 buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.gms:google-services:3.1.0'
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

and this is my app build gradle file :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "ir.digiwindow.driver.gps_status"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    testCompile 'junit:junit:4.12'
    compile 'com.google.firebase:firebase-messaging:11.0.4'


}
apply plugin: 'com.google.gms.google-services'

and I always give this error :

Error:(30, 13) Failed to resolve: compile 'com.google.firebase:firebase-messaging:11.0.4'

The interesting point here is that when I change version from 11.0.4 to 10.0.1 no error occurs and gradle build successfully! I read all related posts in stackoverflow and google developer site, but this error still exists! Any ideas welcome...

Edit 1: when I go to look for updates I don't see any option about updating google play service here in the image:

Android SDK dialog

Scabby answered 10/8, 2017 at 14:59 Comment(2)
Make sure you have the latest Google Repository in the Android SDK managerLeucopenia
In the Android SDK manager ,Google Repository version is 51.Scabby
C
19

I have faced the same problem, I have resolved it by updating two things

  1. Google play service
  2. Google repository

enter image description here

Conformity answered 12/8, 2017 at 6:40 Comment(1)
exactly, I must updated Google play service and Google repository and that solved my problemScabby
C
3

Mr Jan, Please follow below link its clearly says that->

https://firebase.google.com/docs/android/setup#Prerequisites

Prerequisites-

  • A device running Android 4.0 (Ice Cream Sandwich) or newer, and Google Play services 11.6.0 or higher
  • The Google Play services SDK from the Google Repository, available in the Android SDK Manager
  • The latest version of Android Studio, version 1.5 or higher

So Upgrade your Google Play Services and Google Repository in SDK Manager

Open Android studio > Go to File > Settings > Appearance and Behavior > System Setting > Android SDK > SDK Tools > Update

1- Google Play Services and

2- Google Repository under Support Repository

Checkerberry answered 10/8, 2017 at 15:7 Comment(0)
R
1

As Dileep mentioned from the documentation, you need to have Google Play Services 11.0.4 or higher installed.

Just open the SDK Manager,
Then Android SDK (on the left hand menu)
Then to the SDK Tools Tab and update Google Play Services, which is currently in version 43 (2017-08-10).

That solved it for me.

Rorke answered 10/8, 2017 at 19:44 Comment(1)
Thanks for your answer, I installed Google Play Services version 43, but error still existsScabby
P
1

Try to add Firebase features through firebase Assitance go to Tools then Firebase and then select which feature you want to add like Realtime Database. It will automatically add the compile dependencies to your project. I did the same and solved my problem.

Preternatural answered 22/11, 2017 at 19:20 Comment(0)
E
1

It should be this way:

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.1'

    classpath 'com.google.gms:google-services:3.1.1' // ADD this
}

app: (11.8.0)

implementation 'com.google.firebase:firebase-messaging:11.8.0' // ADD this
Euthanasia answered 16/4, 2018 at 2:19 Comment(0)
Y
1

As of 1-10-2020, this is what worked for me.

Top level build.gradle file:

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"
        classpath 'com.google.gms:google-services:4.3.4'
    }
}    
allprojects {
    repositories {
        google()
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

App level build.gradle file:

plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
}
//Top code is same as= apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.0"

    defaultConfig {
        applicationId "com.gc.pushnotificationssampleapp2"
        minSdkVersion 24
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    //Start of unique libs for this project:
    implementation 'com.google.firebase:firebase-messaging:20.0.1'
}

Make sure you have your app registered in Firebase. So you should have a google-services.json file in your project with your project's package name in it, something like this:

"client_info": {
  "mobilesdk_app_id": "1:551460864994:android:c0310a960a3afb06df2fbb",
  "android_client_info": {
    "package_name": "com.gc.pushnotificationssampleapp2"
  }

AndroidManifest.xml will need:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
. . . 
<service
    android:name=".FirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
Yurik answered 9/1, 2021 at 22:54 Comment(0)
E
0

Un Tick Offline Gradle Build will solve this issue if any of the above solution not working

Eccrine answered 10/5, 2018 at 12:22 Comment(0)
U
0

Gradle version, firebase services version and google-play-services versions should be same when using. you may not use gradle 2.x with firebase core 16.x for example.

Uncoil answered 21/9, 2018 at 8:57 Comment(0)
C
0

The solution is to update to the latest version of the classpath of com.google.gms:google-services

which is hinted by Android Studio in file build.gradle of the project

enter image description here

enter image description here

Cranberry answered 30/4, 2019 at 13:16 Comment(0)
S
0

add in gradle

 Dependencies{
    
     // for the Firebase
        implementation platform('com.google.firebase:firebase-bom:26.5.0')
        implementation 'com.google.firebase:firebase-core:16.0.1'
        implementation 'com.google.firebase:firebase-messaging:20.1.3'
         implementation 'com.google.firebase:firebase-analytics:17.2.3'
    
    
    
    }
    
    apply plugin: 'com.google.gms.google-services'

and add in manifest

 <application>

     <service android:name=".util.FirebaseMessageReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>


    </application>

and FirebaseMessageReceiver.java

this is with custom layout

    package com.---------.app.util;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.widget.RemoteViews;

import androidx.core.app.NotificationCompat;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.pisel.app.MainActivity;
import com.pisel.app.R;

public class FirebaseMessageReceiver
        extends FirebaseMessagingService {

    // Override onMessageReceived() method to extract the
    // title and
    // body from the message passed in FCM
    @Override
    public void
    onMessageReceived(RemoteMessage remoteMessage) {
        // First case when notifications are received via
        // data event
        // Here, 'title' and 'message' are the assumed names
        // of JSON
        // attributes. Since here we do not have any data
        // payload, This section is commented out. It is
        // here only for reference purposes.
        /*if(remoteMessage.getData().size()>0){
            showNotification(remoteMessage.getData().get("title"),
                          remoteMessage.getData().get("message"));
        }*/

        // Second case when notification payload is
        // received.
        if (remoteMessage.getNotification() != null) {
            // Since the notification is received directly from
            // FCM, the title and the body can be fetched
            // directly as below.
            showNotification(
                    remoteMessage.getNotification().getTitle(),
                    remoteMessage.getNotification().getBody());
        }
    }

    // Method to get the custom Design for the display of
    // notification.
    private RemoteViews getCustomDesign(String title,
                                        String message) {
        RemoteViews remoteViews = new RemoteViews(
                getApplicationContext().getPackageName(),
                R.layout.notification);
        remoteViews.setTextViewText(R.id.title, title);
        remoteViews.setTextViewText(R.id.message, message);
        remoteViews.setImageViewResource(R.id.icon,
                R.drawable.flag_belarus);
        return remoteViews;
    }

    // Method to display the notifications
    public void showNotification(String title,
                                 String message) {
        // Pass the intent to switch to the MainActivity
        Intent intent
                = new Intent(this, MainActivity.class);
        // Assign channel ID
        String channel_id = "notification_channel";
        // Here FLAG_ACTIVITY_CLEAR_TOP flag is set to clear
        // the activities present in the activity stack,
        // on the top of the Activity that is to be launched
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        // Pass the intent to PendingIntent to start the
        // next Activity
        PendingIntent pendingIntent
                = PendingIntent.getActivity(
                this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);

        // Create a Builder object using NotificationCompat
        // class. This will allow control over all the flags
        NotificationCompat.Builder builder
                = new NotificationCompat
                .Builder(getApplicationContext(),
                channel_id)
                .setSmallIcon(R.drawable.flag_india)
                .setAutoCancel(true)
                .setVibrate(new long[]{1000, 1000, 1000,
                        1000, 1000})
                .setOnlyAlertOnce(true)
                .setContentIntent(pendingIntent);

        // A customized design for the notification can be
        // set only for Android versions 4.1 and above. Thus
        // condition for the same is checked here.
        if (Build.VERSION.SDK_INT
                >= Build.VERSION_CODES.JELLY_BEAN) {
            builder = builder.setContent(
                    getCustomDesign(title, message));
        } // If Android Version is lower than Jelly Beans,
        // customized layout cannot be used and thus the
        // layout is set as follows
        else {
            builder = builder.setContentTitle(title)
                    .setContentText(message)
                    .setSmallIcon(R.drawable.flag_british_indian_ocean_territory);
        }
        // Create an object of NotificationManager class to
        // notify the
        // user of events that happen in the background.
        NotificationManager notificationManager
                = (NotificationManager) getSystemService(
                Context.NOTIFICATION_SERVICE);
        // Check if the Android Version is greater than Oreo
        if (Build.VERSION.SDK_INT
                >= Build.VERSION_CODES.O) {
            NotificationChannel notificationChannel
                    = new NotificationChannel(
                    channel_id, "web_app",
                    NotificationManager.IMPORTANCE_HIGH);
            notificationManager.createNotificationChannel(
                    notificationChannel);
        }

        notificationManager.notify(0, builder.build());
    }
}

create a layout for notification design

  <!-- Parent Layout of ImageView -->
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <!--Image to be displayed beside the notification text-->
        <ImageView
            android:id="@+id/icon"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:padding="5dp"
            android:src="@drawable/flag_benin" />
    </LinearLayout>

    <!-- Parent layout for holding the Title and the Body-->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:padding="5dp">

        <!-- TextView for Title -->
        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Title"
            android:textColor="#000"
            android:textStyle="bold" />

        <!-- TextView for Body -->
        <TextView
            android:id="@+id/message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Message"
            android:textSize="15sp" />

    </LinearLayout>

</LinearLayout>
Savagism answered 26/2, 2021 at 10:55 Comment(0)
V
0

For those who use firebase bom

implementation platform('com.google.firebase:firebase-bom:29.0.1')
// Firebase Cloud Messaging (Java)
    implementation 'com.google.firebase:firebase-messaging'

    // Firebase Cloud Messaging (Kotlin)
    implementation 'com.google.firebase:firebase-messaging-ktx'

    // For an optimal experience using FCM, add the Firebase SDK
    // for Google Analytics. This is recommended, but not required.
    implementation 'com.google.firebase:firebase-analytics'
Vasquez answered 6/12, 2021 at 12:5 Comment(0)
M
-1

I had the same problem and I just changed the version from 11.0.4 to 10.0.1 and the error went away. Just try it, it may be helpful.

Mccreary answered 12/8, 2017 at 6:29 Comment(0)
B
-1

I had the same problem. Later discovered I copied the line exactly from firebase docs.

Classpath 'com.google.gms:google-services:3.1.1'

Notice the CAPITAL 'C'.

it should be

classpath 'com.google.gms:google-services:3.1.1'

with lower case 'c'.

Dumb mistake but easily unnoticeable.

Brinn answered 24/1, 2018 at 16:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.