【问题标题】:java.lang.NoClassDefFoundError: com.google.android.gms.ads.AdViewjava.lang.NoClassDefFoundError: com.google.android.gms.ads.AdView
【发布时间】:2014-06-24 05:58:30
【问题描述】:

我正在编写代码以在我的 Android 应用程序中显示 Admob 横幅。为了实现这一点,我做了以下一些调整:

  • 配置的 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)

【问题讨论】:

  • 尝试删除 jars 然后再次添加它们并清理您的构建,然后运行...
  • 我没有在项目中添加任何罐子。我在我的主项目之外创建了一个示例项目并且它在那里工作正常但是当我尝试合并到我的主项目中时它会抛出这个异常
  • com.google.android.gms.ads.AdView 为此您需要添加 jar,如果库或构建路径中有任何 jar,请检查您的工作项目属性
  • 我只包含了包含 com.google.android.gms.ads.AdView 的 google-play-services_lib,我没有包含我正在尝试实现的 GoogleAdMobAdsSdk-6.4.1.jar 文件通过gms
  • libs 文件夹中只有一个名为 android-support-v4.jar 的 jar,没有别的。

标签: java android eclipse admob adsense


【解决方案1】:

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

第一步:您应该登录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"/>

第二步:在主activity中,请不要再次添加adview,因为你已经在xml中添加了adview,不要忘记把loadAdOnCreate = true

第三步:

您已经将必需品添加到清单中。

第四步:当你在模拟器上运行时,它会给出测试广告

第五步:现在您可以在设备上启动了

【讨论】:

  • 它是否与 android-support-v4.jar 有关,因为当我删除此 jar 时,它会启动应用程序但不会加载广告并引发以下错误找不到类 'android. support.v4.app.FragmentActivity',引用自方法 com.google.android.gms.common.GooglePlayServicesUtil.showErrorDialogFragment
【解决方案2】:

为您的项目添加 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。

【讨论】:

  • 我已按照指南正确安装了 GPS,并将其作为库项目包含在其中
  • 它是否与 android-support-v4.jar 有关,因为当我删除此 jar 时,它会启动应用程序但不会加载广告并引发以下错误找不到类 'android. support.v4.app.FragmentActivity',引用自方法 com.google.android.gms.common.GooglePlayServicesUtil.showErrorDialogFragment
  • 没有。这只是意味着应用程序在早期丢失的类上崩溃。
  • 我想您没有正确遵循指南 - 正如我所说的 - 我可以从我自己的项目中很好地参考 AdView。
  • 您的意思是说您可以从您的项目中引用 AdView 而无需在您的项目中添加 Google Play 服务作为库?
猜你喜欢
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多