如何添加谷歌的AdSense?

时间:2013-04-12 17:07:12

标签: android adsense

我使用的代码看起来很完美而没有任何错误bt不知道为什么我的应用程序每次运行我的应用程序时都会崩溃..

<com.google.ads.AdView
    android:id="@+id/ad"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    ads:adUnitId= "idthatigotthroughadmob"
    ads:loadAdOnCreate="true"
    ads:adSize="BANNER"
/>
在android manifest.xml中

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application><activity
 android:name="com.google.ads.AdActivity"
 android:configChanges="keyboard|keyboardHidden|orientation"
 ></activity> </application>

logcat显示

04-12 21:30:09.655: E/dalvikvm(272): Could not find class 'com.google.ads.AdView', 
referenced from method com.project.hisaabkikitaab.MainActivity.onCreate
04-12 21:30:09.655: W/dalvikvm(272): VFY: unable to resolve check-cast 471 (Lcom/google
/ads/AdView;) in Lcom/project/hisaabkikitaab/MainActivity;
04-12 21:30:09.655: D/dalvikvm(272): VFY: replacing opcode 0x1f at 0x000e
04-12 21:30:09.655: D/dalvikvm(272): VFY: dead code 0x0010-02b9 in Lcom/project  
/hisaabkikitaab/MainActivity;.onCreate (Landroid/os/Bundle;)V
04-12 21:30:09.815: D/AndroidRuntime(272): Shutting down VM
04-12 21:30:09.815: W/dalvikvm(272): threadid=1: thread exiting with uncaught     
exception  (group=0x4001d800)
04-12 21:30:09.845: E/AndroidRuntime(272): FATAL EXCEPTION: main
04-12 21:30:09.845: E/AndroidRuntime(272): java.lang.NoClassDefFoundError:    
com.google.ads.AdView
04-12 21:30:09.845: E/AndroidRuntime(272):  at    
com.project.hisaabkikitaab.MainActivity.onCreate(MainActivity.java:42)
04-12 21:30:09.845: E/AndroidRuntime(272):  at   
.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

2 个答案:

答案 0 :(得分:3)

您还需要将ads命名空间添加到布局根节点

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

您可能从中获取示例的教程已经拥有它:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
  <com.google.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adUnitId="MY_AD_UNIT_ID"
                         ads:adSize="BANNER"
                         ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                         ads:loadAdOnCreate="true"/>
</LinearLayout>

来源:https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals,Android标签

另一种可能的解决方案:

项目中是否有libs个文件夹?如果是这样,是否有admob库?如果您对其中任何一个拒绝,请确保创建libs文件夹(位于ressrc的同一级别,并在此处复制您的admob库。清理项目并重建。

答案 1 :(得分:0)

参考:

https://developers.google.com/admob/android/banner

build.gradle(应用)

implementation 'com.google.android.gms:play-services-ads:20.1.0'

AndroidManifest.xml

<application
    .....
   <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>

activity_main.xml

<com.google.android.gms.ads.AdView
  xmlns:ads="http://schemas.android.com/apk/res-auto"
  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="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

在主活动中

private AdView mAdView;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MobileAds.initialize(this, new OnInitializationCompleteListener() {
        @Override
        public void onInitializationComplete(InitializationStatus initializationStatus) {
        }
    });

    mAdView = findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);

    mAdView.setAdListener(new AdListener() {

    @Override
    public void onAdLoaded() {
    
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
   
    }

    @Override
    public void onAdOpened() {
    
    }

    @Override
    public void onAdClicked() {

    }

    @Override
    public void onAdClosed() {
    
    }
  });
}