簡體   English   中英

找不到符號導入 com.google.firebase.iid.FirebaseInstanceId;

[英]cannot find symbol import com.google.firebase.iid.FirebaseInstanceId;

我從GitHub下載了一個project進行修改,發現有些錯誤

這個項目可以直接打開但是會用到作者的firebase

我更新了實施 'com.google.firebase:firebase-database:20.0.3' core: 20.0.2 storage:20.0.0 auth:21.0.1 messaging: 23.0.0

之后發現報錯:cannot find symbol import com.google.firebase.iid.FirebaseInstanceId;

上網查找后,發現FirebaseInstanceIdService不再使用,改為FirebaseMessagingService,但是在項目中,找到文件FirebaseMessagingService.java

最后直接把報錯的地方刪了,最后還是出現了這個問題Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 > java

這是 MyFirebaseInstaceIdService.java

package com.example.cr7.mobieshop;

import android.nfc.Tag;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.util.Log;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;

public class MyFirebaseInstaceIdService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";

    @Override
    public void onTokenRefresh() {

        //Getting registration token
        final String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);
        Pref sharedPrefrenceHelper=new Pref(getApplicationContext());
        sharedPrefrenceHelper.saveFCMId(refreshedToken);
    }
}

這是 category_class.java

      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()) {
                for(DataSnapshot ds : dataSnapshot.getChildren())
                {
                    upload = new upload_userdata();
                    upload.setUser_name(ds.getValue(upload_userdata.class).getUser_name());
                    upload.setProfile_pic_url(ds.getValue(upload_userdata.class).getProfile_pic_url());
                    namee = upload.getUser_name();
                    img_str = upload.getProfile_pic_url();
                }
            }

            tvName.setText(namee);
            Picasso.get().load(img_str).into(imgProfile);

            final String token = FirebaseInstanceId.getInstance().getToken();
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    sendRegistrationToServer(token,namee);
                }
            }, 10000);

        }

這是 build.gradle

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'hawkx'
            keyPassword 'asdfghjkl'
            storeFile file('C:/Users/VINAY/Desktop/release/app-release.apk')
            storePassword 'asdfghjkl'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.cr7.mobieshop"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            lintOptions {
                checkReleaseBuilds false
                abortOnError false
            }
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //noinspection GradleCompatible
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.firebase:firebase-database:20.0.3'
    implementation 'com.google.firebase:firebase-core:20.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.google.firebase:firebase-storage:20.0.0'
    implementation 'com.daimajia.numberprogressbar:library:1.4@aar'
    implementation 'com.google.firebase:firebase-auth:21.0.1'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'com.miguelcatalan:materialsearchview:1.4.0'
    implementation 'com.android.support:percent:28.0.0'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    implementation 'com.github.ybq:Android-SpinKit:1.2.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    implementation 'com.google.code.gson:gson:2.6.2'
    implementation 'com.squareup.okhttp3:okhttp:3.3.0'
}
apply plugin: 'com.google.gms.google-services'

它貶值了。 這是我用於刷新令牌的新代碼,來自 Firebase。

FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
                @Override
                public void onComplete(@NonNull Task<String> task) {
                    if(task.isComplete()){
                      String token = task.getResult();


                    }
                }
            });

至於 'app:transformDexArchiveWithExternalLibsDexMergerForDebug' 這個問題來自兩件事:

  1. 編譯 sdk 版本,它與您正在使用的新版本的依賴項不兼容,所以至少要 30。

    android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { targetSdkVersion 30 } }

  2. 像這樣在 build.gradle(Module:app) 的默認配置中添加“multiDexEnabled true”。

android{
defaultConfig { multiDexEnabled 真
} }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM