Firebase AdMob引发IncompatibleClassChangeError

java.lang.IncompatibleClassChangeError: Superclass com.google.android.gms.dynamic.zzg of com.google.android.gms.internal.zzdx is declared final (declaration of 'com.google.android.gms.internal.zzdx' appears in /data/app/io.github.basixkor.scipnet-1/split_lib_dependencies_apk.apk:classes12.dex) at com.google.android.gms.internal.zzeh.zzeO(Unknown Source) at com.google.android.gms.internal.zzey.<clinit>(Unknown Source) at com.google.android.gms.ads.AdRequest.<clinit>(Unknown Source) at com.google.android.gms.ads.AdRequest$Builder.<init>(Unknown Source) 

这是通过调用AdRequest引发的堆栈跟踪。 我尝试清洁,并重建,但仍然无法正常工作。

 find<AdView>(R.id.adView).loadAd(AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build()) 

此代码是用于加载广告的kotlin代码。

 <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="@string/banner_ad_unit_id" /> 

这是一个布局。 我如何解决这个错误?

这是一个版本问题。 确保您拥有相同版本的firebase-corefirebase-ads

如果adView是您的activity_main.xml中的AdView id

那么你可以这样使用:

 private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //layout having AdView mAdView = (AdView) findViewById(R.id.adView); AdRequest.Builder builder =new AdRequest.Builder(); builder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); AdRequest adRequest = builder.build(); mAdView.loadAd(adRequest); }