代码之家  ›  专栏  ›  技术社区  ›  Payam

无法在Android Studio 2.3.3中解析“com.google.firebase:firebase messaging:11.0.4”

  •  10
  • Payam  · 技术社区  · 7 年前

    我正在使用最新版本的Android studio(2.3.3),我的Android SDK已经完全更新。

    这是我的项目gradle文件:

     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
    }
    

    这是我的app build gradle文件:

    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'
    

    我总是犯这样的错误:

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

    这里有趣的一点是,当我将版本从11.0.4更改为10.0.1时,没有发生错误,gradle构建成功! 我阅读了stackoverflow和google开发者网站上的所有相关帖子,但这个错误仍然存在! 欢迎任何想法。。。

    编辑1:

    Android SDK dialog

    13 回复  |  直到 7 年前
        1
  •  19
  •   Sibasish Milon    6 年前

    我也遇到了同样的问题,我通过更新两件事来解决它

    1. Google play服务

    enter image description here

        2
  •  3
  •   Dileep Patel    6 年前

    简先生,请点击下面的链接,它清楚地表明->

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

    先决条件-

    • Google Repository中的Google Play services SDK,可在Android SDK管理器中获得
    • Android Studio的最新版本,1.5或更高版本

    Google Play服务和Google Repository 在SDK管理器中

    打开Android studio>转到文件(>);设置(>);外观和行为;系统设置>Android SDK>SDK工具>使现代化

    Google Play服务

    2- 谷歌知识库 在下面

        3
  •  1
  •   pmarquezh    7 年前

    正如Dileep在文档中提到的,您需要安装Google Play Services 11.0.4或更高版本。


    然后是Android SDK(在左侧菜单上)

    这为我解决了问题。

        4
  •  1
  •   DarkCygnus    7 年前

    Firebase 它会自动将编译依赖项添加到项目中。我也这么做了,解决了我的问题。

        5
  •  1
  •   hosein kordloo    6 年前

    应该是这样的:

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
    
        classpath 'com.google.gms:google-services:3.1.1' // ADD this
    }
    

    附录:(11.8.0)

    implementation 'com.google.firebase:firebase-messaging:11.8.0' // ADD this
    
        6
  •  1
  •   Muhammed Suhail    6 年前

    如果上述任何解决方案不起作用,Un-Tick Offline Gradle Build将解决此问题

        7
  •  1
  •   Gene    4 年前

    顶层 build.gradle

    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
    }
    

    应用程序级别

    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'
    }
    

    确保你的应用程序已在Firebase中注册。所以你应该有一个 google-services.json

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

    <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>
    
        8
  •  0
  •   Alp Altunel Brinda Rathod    6 年前

    Gradle版本、firebase服务版本和google play服务版本在使用时应相同。例如,你不能在firebase core 16.x中使用gradle 2.x。

        9
  •  0
  •   Kanda Runapongsa Saikaew    5 年前

    Android Studio在文件构建中暗示了这一点。项目的梯度

    enter image description here

    enter image description here

        10
  •  0
  •   btm me    3 年前

    加载项渐变

     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'
    

    和加载项清单

     <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>
    

    这是自定义布局

        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());
        }
    }
    

    创建通知设计布局

      <!-- 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>
    
        11
  •  0
  •   Qamar khan    3 年前

    适用于使用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'
    
        12
  •  -1
  •   Ratul Bin Tazul    7 年前

    我也有同样的问题。后来发现我完全是从firebase文档中复制了这一行。

    应该是这样的

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

    带小写字母“c”。

    愚蠢的错误,但很容易被忽视。

        13
  •  -1
  •   theGtknerd    5 年前

    我也有同样的问题,我只是把版本从 11.0.4 10.0.1 错误消失了。试试看,可能会有帮助。