我有两台不同的开发电脑,一台电脑和一台Mac笔记本电脑。我经常在一个上工作,检查BitBucket上的私人仓库,然后切换到另一个。
最近,我一直在尝试使用adMob将广告添加到Android应用程序(我的第一个)。当我尝试在模拟器中运行应用程序时,我一直在我的LogCat中打印出“错误膨胀类com.google.adroid.gms.ads.AdView”。
我尝试了所有常见的事情谷歌搜索:
最后,我将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示例进行任何更改。这是我为了得到上述错误而运行的示例。
答案 0 :(得分:0)
不要将xmlns:android="http://schemas.android.com/apk/res/android"
放在线性布局标记中,而是将其放在<com.google.android.gms.ads.AdView
标记中。如下图所示:
<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;
如需进一步的帮助,请访问此Link