[英]Flutter Error: cannot find symbol import com.google.firebase.firestore.TransactionOptions
[英]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' 這個問題來自兩件事:
編譯 sdk 版本,它與您正在使用的新版本的依賴項不兼容,所以至少要 30。
android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { targetSdkVersion 30 } }
像這樣在 build.gradle(Module:app) 的默認配置中添加“multiDexEnabled true”。
android{
defaultConfig { multiDexEnabled 真
} }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.