Android Studio - Error inflating class com.google.ads.AdView

匿名 (未验证) 提交于 2019-12-03 08:30:34

问题:

I'm using new Android Studio. I've done an application and works fine, now I've to add AdMob sdk. so I put the jar in 'libs' folder and right-click "add as library". I run the project on my smartphone but the application crashes on startup.

How can i solve this? I think it'll be something wrong with the import of AdMob sdk.

Thank you!

This is the xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.my.application" android:installLocation="preferExternal" android:versionCode="1" android:versionName="1.0" >  <uses-sdk     android:minSdkVersion="8"     android:targetSdkVersion="16" />  <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  <application     android:allowBackup="true"     android:icon="@drawable/icon"     android:label="@string/app_name"     android:theme="@style/AppTheme" >     <activity         //MY ACTIVITY     </activity>         <intent-filter>             <action android:name="android.intent.action.MAIN" />              <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>      <activity             android:name="com.google.ads.AdActivity"                android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />      <meta-data android:name="ADMOB_ALLOW_LOCATION_FOR_ADS" android:value="true"/>     <meta-data android:name="ADMOB_PUBLISHER_ID" android:value="a151964f48b17a7"/>  </application> 

This is the layout xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"             xmlns:tools="http://schemas.android.com/tools"             android:layout_width="match_parent"             android:layout_height="match_parent"              xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"             tools:context=".MainActivity">  <com.google.ads.AdView         android:id="@+id/adView"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentBottom="true"         android:layout_centerHorizontal="true"         ads:adSize="BANNER"         ads:adUnitId="MY_UNIT_ID"         ads:loadAdOnCreate="true" > </com.google.ads.AdView> 

And this is the logcat

5-20 15:38:00.835  26121-26121/com.mnt.crudelibestmoments     E/AndroidRuntime: FATAL EXCEPTION: main     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mnt.crudelibestmoments/com.mnt.crudelibestmoments.MainActivity}: android.view.InflateException: Binary XML file line #195: Error inflating class com.google.ads.AdView     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)     at android.app.ActivityThread.access$600(ActivityThread.java:127)     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)     at android.os.Handler.dispatchMessage(Handler.java:99)     at android.os.Looper.loop(Looper.java:137)     at android.app.ActivityThread.main(ActivityThread.java:4448)     at java.lang.reflect.Method.invokeNative(Native Method)     at java.lang.reflect.Method.invoke(Method.java:511)     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)     at dalvik.system.NativeStart.main(Native Method)     Caused by: android.view.InflateException: Binary XML file line #195: Error inflating class com.google.ads.AdView     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)     at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)     at android.app.Activity.setContentView(Activity.java:1835)     at com.mnt.crudelibestmoments.MainActivity.onCreate(MainActivity.java:40)     at android.app.Activity.performCreate(Activity.java:4465)     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)     ... 11 more     Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)     at android.view.LayoutInflater.createView(LayoutInflater.java:552)     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 

If i hide the AdMob code in layout xml, the application works properly

thank you!

回答1:

it's a bit tricky but here is the solution:

The current preview release doesn't edit the build.gradle file, even if you have added the admob library to the dependencies in the menu. What you can do is to add the dependency manually, it's very easy:

double click on the file "build.gradle" on the left in the navigation menu. Add the following line:

compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar')

It should look like:

buildscript {     repositories {         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:0.4'      } } apply plugin: 'android'  dependencies {     compile files('libs/android-support-v4.jar')     compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar') }  android {     compileSdkVersion 17     buildToolsVersion "17.0.0"      defaultConfig {         minSdkVersion 7         targetSdkVersion 16     } } 


回答2:

Right click your project and go to Properties -> Java Build Path. In Libraries add the AdMob SDK jar, and in Order and Export check the AdMob SDK library. Then clean and re-run your application.

Previously, putting 3rd party libraries in the libs/ folder was sufficient for the Android build to bundle these libraries when compiling your app. But since the release of v22 of the Android tools, you now have to explicitly add the library to your build path and export it.



回答3:

I was the same and achieve fix, I have done just the same as you and I miss you just do the following:

open a terminal (windows or linux) and go to the root of your project, eg AndroidStudioProjects / MyProject

Run the command:

Linux(is the file gradlew): ./gradlew clean

Windows(is the file gradlew.bat): gradlew clean

Now goto: Build > Rebuild Project

That's it, enjoy!!!

Sorry for the bad English



回答4:

I got same problem.I changed Android.jar to 4.2.2. Now it works fine in both emulator and phone



回答5:

This may help you integrate admob with your application but google is not going to accept any updated or new apps which use this type of admob integration following 1 August 2014.

https://developers.google.com/mobile-ads-sdk/download#downloadandroid

Instead I recommend you to use Google Play Services version as suggested in above document.



回答6:

You are most likely using a AdView layout with package name com.google.ads.AdView. Change it to:

 <com.google.android.gms.ads.AdView         xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads"         android:id="@+id/ad"         android:layout_width="fill_parent"         android:layout_height="wrap_content"          /> 

I am also using Android Studio, with build.gradle dependency set like this:

dependencies { compile 'com.android.support:appcompat-v7:+' compile 'com.google.android.gms:play-services:4.3.23' } 

Moving forward,we are not required to manually add libs that already have Maven coordinates to point to, so do NOT do this.

dependencies { compile files('libs/android-support-v4.jar') compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar') } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!