java.lang.NoClassDefFoundError:com.google.android.gms.ads.AdView

时间:2014-05-07 10:04:47

标签: java android eclipse admob adsense

我正在编写代码以在我的Android应用中显示Admob Banner。为了达到这个目的,我做了以下几点调整:

  • 配置了以下网址的Google Play服务库:https://developers.google.com/mobile-ads-sdk/docs/
  • 已添加

        <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" /> 
    

       <meta-data
       android:name="com.google.android.gms.version"
        android:value="4323000" /> 

我的清单文件中的代码,还添加了以下权限:

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

当我尝试运行应用程序时会出现问题,它会抛出以下异常:

     05-07 14:51:17.617: E/AndroidRuntime(7877): FATAL EXCEPTION: main
     05-07 14:51:17.617: E/AndroidRuntime(7877): java.lang.NoClassDefFoundError:       com.google.android.gms.ads.AdView
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at com.atc.hums.HumsActivity.onCreate(HumsActivity.java:458)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.Activity.performCreate(Activity.java:5165)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.ActivityThread.access$600(ActivityThread.java:162)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.os.Handler.dispatchMessage(Handler.java:99)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.os.Looper.loop(Looper.java:158)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at android.app.ActivityThread.main(ActivityThread.java:5751)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at java.lang.reflect.Method.invokeNative(Native Method)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at java.lang.reflect.Method.invoke(Method.java:511)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
     05-07 14:51:17.617: E/AndroidRuntime(7877):    at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:3)

为您的项目添加Google Play服务支持

根据Google Play Services setup guide,不仅仅是“添加罐子”。 由于GPS捆绑了资源,您必须将其作为新的单独项目导入,并从您自己的现有项目中引用它。

请按照设置指南进行操作。我刚刚确认我可以从我自己的GPS项目中成功引用AdView

确保您的设备支持Google Play服务

GPS是一项外部服务 - 它是由Play商店应用管理的APK,您需要确保用户拥有最新的GPS APK和/或符合您想要的功能。以下是指南:Ensure Devices Have the Google Play services APK

如果设备没有安装GPS(不是Google设备,特殊ROM,AOSP ROM,旧Android等等),则无法使用AdView。

答案 1 :(得分:0)

我认为你应该遵循这些步骤

第一步:您应该登录到admob帐户并在那里添加一个没有url的应用程序。点击管理应用程序,从xml布局中的adunitId请放置以下代码。

 <com.google.ads.AdView android:id="@+id/adView"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     ads:adUnitId="youradunitid"
                     ads:adSize="BANNER"
                     ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                     ads:loadAdOnCreate="true"/>

第二步:在主要活动中,请不要再添加adview,因为您已经在xml中添加了adview,请不要忘记将loadAdOnCreate = true

第三步:

您已经为清单添加了必要条件。

第四步:当您在模拟器上运行时,它会提供测试广告

第五步:现在您已准备好在设备上启动