臭名昭着的“错误膨胀类com.google.android.gms.ads.AdView”,适用于Mac,而不适用于PC

时间:2015-01-18 06:13:01

标签: android eclipse admob adt

我有两台不同的开发电脑,一台电脑和一台Mac笔记本电脑。我经常在一个上工作,检查BitBucket上的私人仓库,然后切换到另一个。

最近,我一直在尝试使用adMob将广告添加到Android应用程序(我的第一个)。当我尝试在模拟器中运行应用程序时,我一直在我的LogCat中打印出“错误膨胀类com.google.adroid.gms.ads.AdView”。

我尝试了所有常见的事情谷歌搜索:

  1. 确保我将google-play-services-lib的副本导入我的工作区。
  2. 确保我的项目引用了库,并且引用的库旁边有一个绿色勾号。
  3. 确保我已使用所需的权限,元数据和活动更新了AndroidManifest.xml。
  4. 确保我的活动.xml文件正在导入正确的xmlns:xmlns:ads =“http://schemas.android.com/apk/res-auto”
  5. 最后,我将GoogleAdsSampleActivity示例导入了我的工作区,将google-play-services_lib添加为库,并添加了我的ad_unit_id,但仍无效。

    一时兴起,我检查了所有内容,然后切换到我的Mac。一切正常。回到我的电脑,我可以让它在Android Studio中运行,只是不在eclipse中,我的Mac和PC都使用相同版本的Eclipse(4.4.1 Build Id:20140925-1800)和ADT(23.0.4.1468518) )。我已经尝试重新安装eclipse,重新安装ADT,使用旧版本的Eclipse,甚至将其关闭再打开,但我仍然遇到同样的错误。

    有没有人见过这个?关于我还能尝试什么的任何其他建议?

    由于

    更新 根据要求,这是完整的堆栈跟踪:

    01-19 14:28:26.130: E/AndroidRuntime(1067): FATAL EXCEPTION: main
    01-19 14:28:26.130: E/AndroidRuntime(1067): Process: com.google.android.gms.samples.ads, PID: 1067
    01-19 14:28:26.130: E/AndroidRuntime(1067): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.google.android.gms.samples.ads/com.google.android.gms.samples.ads.BannerXmlActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class com.google.android.gms.ads.AdView
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.os.Handler.dispatchMessage(Handler.java:102)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.os.Looper.loop(Looper.java:136)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at java.lang.reflect.Method.invokeNative(Native Method)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at java.lang.reflect.Method.invoke(Method.java:515)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at dalvik.system.NativeStart.main(Native Method)
    01-19 14:28:26.130: E/AndroidRuntime(1067): Caused by: android.view.InflateException: Binary XML file line #24: Error inflating class com.google.android.gms.ads.AdView
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:707)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.Activity.setContentView(Activity.java:1929)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at com.google.android.gms.samples.ads.BannerXmlActivity.onCreate(BannerXmlActivity.java:34)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.Activity.performCreate(Activity.java:5231)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     ... 11 more
    01-19 14:28:26.130: E/AndroidRuntime(1067): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.ads.AdView" on path: DexPathList[[zip file "/data/app/com.google.android.gms.samples.ads-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.google.android.gms.samples.ads-1, /system/lib]]
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.createView(LayoutInflater.java:559)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
    01-19 14:28:26.130: E/AndroidRuntime(1067):     ... 21 more
    

    此外,我意识到我的模拟器运行的是Android API级别17,所以我认为这是问题所在。奇怪的是,即使安装了所有系统映像,也不会让我创建一个运行级别为19的模拟器。经过进一步调查,我发现Eclipse指向我手动安装的SDK版本,大概是一对(或几年前)。我将其更改为使用Android Studio正在使用的相同SDK,现在可以创建一个19级模拟器,但仍然会出现同样的错误。

    关于代码,除了添加自己的ad_unit_id之外,我没有对GoogleAdsSampleActivity示例进行任何更改。这是我为了得到上述错误而运行的示例。

1 个答案:

答案 0 :(得分:0)

不要将xmlns:android="http://schemas.android.com/apk/res/android"放在线性布局标记中,而是将其放在<com.google.android.gms.ads.AdView标记中。如下图所示:

&#13;
&#13;
 <com.google.android.gms.ads.AdView 
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:adSize="SMART_BANNER"
        />
&#13;
&#13;
&#13;

如需进一步的帮助,请访问此Link