Reputation: 2287
I am getting the below exception when running an android application with AdMob I tried different ideas given by other people for the same type of error but still its not working. So I creating a new question.
Also this project was created using cordova and project structure is as this image.
I am using below Environments
JDK 8
Google Play Service - 19
Below jars are inside the lib directory
android-support-v4.jar google-play-services.jar
Java Code with Main Activity
package com.aotsinc.games.android.c2c.bible;
import org.apache.cordova.CordovaActivity;
import android.os.Bundle;
import android.view.Window;
import android.widget.LinearLayout;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
public class Clues2BibleCharacter extends CordovaActivity {
private static final String AdMob_Ad_Unit = "a150e3af6a308da";
private AdView adView;
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
adView = new AdView(this);
adView.setAdUnitId(AdMob_Ad_Unit);
adView.setAdSize(AdSize.BANNER);
LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout);
layout.addView(adView);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("INSERT_YOUR_HASHED_DEVICE_ID_HERE")
.build();
adView.loadAd(adRequest);
this.setIntegerProperty("loadUrlTimeoutValue", 70000);
super.setIntegerProperty("splashscreen", R.drawable.screen);
loadUrl(launchUrl);
}
}
AndroidManifest.xml
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.aotsinc.games.android.c2c.bible" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="Clues2BibleCharacter" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.ads.AdActivity" />
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<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="4452000" />
</manifest>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:id="@+id/linearLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.gms.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="a150e3af6a308da"
ads:adSize="BANNER"
ads:loadAdOnCreate="true" />
</LinearLayout>
Exception
09-29 03:51:12.924: I/CordovaLog(2434): Changing log level to DEBUG(3)
09-29 03:51:12.940: W/dalvikvm(2434): VFY: unable to resolve static field 898 (AdsAttrs) in Lcom/google/android/gms/R$styleable;
09-29 03:51:12.940: D/dalvikvm(2434): VFY: replacing opcode 0x62 at 0x0009
09-29 03:51:12.944: D/AndroidRuntime(2434): Shutting down VM
09-29 03:51:12.952: W/dalvikvm(2434): threadid=1: thread exiting with uncaught exception (group=0xa4c36648)
09-29 03:51:12.952: E/AndroidRuntime(2434): FATAL EXCEPTION: main
09-29 03:51:12.952: E/AndroidRuntime(2434): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aotsinc.games.android.c2c.bible/com.aotsinc.games.android.c2c.bible.Clues2BibleCharacter}: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.gms.ads.AdView
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.os.Looper.loop(Looper.java:137)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-29 03:51:12.952: E/AndroidRuntime(2434): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 03:51:12.952: E/AndroidRuntime(2434): at java.lang.reflect.Method.invoke(Method.java:525)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-29 03:51:12.952: E/AndroidRuntime(2434): at dalvik.system.NativeStart.main(Native Method)
09-29 03:51:12.952: E/AndroidRuntime(2434): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.google.android.gms.ads.AdView
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.createView(LayoutInflater.java:620)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.Activity.setContentView(Activity.java:1895)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.aotsinc.games.android.c2c.bible.Clues2BibleCharacter.onCreate(Clues2BibleCharacter.java:21)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.Activity.performCreate(Activity.java:5133)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-29 03:51:12.952: E/AndroidRuntime(2434): ... 11 more
09-29 03:51:12.952: E/AndroidRuntime(2434): Caused by: java.lang.reflect.InvocationTargetException
09-29 03:51:12.952: E/AndroidRuntime(2434): at java.lang.reflect.Constructor.constructNative(Native Method)
09-29 03:51:12.952: E/AndroidRuntime(2434): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
09-29 03:51:12.952: E/AndroidRuntime(2434): at android.view.LayoutInflater.createView(LayoutInflater.java:594)
09-29 03:51:12.952: E/AndroidRuntime(2434): ... 22 more
09-29 03:51:12.952: E/AndroidRuntime(2434): Caused by: java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.google.android.gms.internal.an.<init>(Unknown Source)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.google.android.gms.internal.at.<init>(Unknown Source)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.google.android.gms.internal.at.<init>(Unknown Source)
09-29 03:51:12.952: E/AndroidRuntime(2434): at com.google.android.gms.ads.AdView.<init>(Unknown Source)
09-29 03:51:12.952: E/AndroidRuntime(2434): ... 25 more
CordovaActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
LOG.i(TAG, "Apache Cordova native platform version " + CordovaWebView.CORDOVA_VERSION + " is starting");
LOG.d(TAG, "CordovaActivity.onCreate()");
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
if(savedInstanceState != null)
{
initCallbackClass = savedInstanceState.getString("callbackClass");
}
loadConfig();
}
Upvotes: 1
Views: 3065
Reputation: 11
Instead of putting xmlns:android="http://schemas.android.com/apk/res/android"
in the Linear Layout tag, put it in <com.google.android.gms.ads.AdView
tag. as shown below:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="a150e3af6a308da"
ads:adSize="BANNER"
ads:loadAdOnCreate="true" />
For further assistance visit this Link
Upvotes: 1
Reputation: 7927
Don't put google-play-services.jar
in the /libs/
folder. Instead, reference the google play services library in your project.
Import the library into your workspace. You'll find it in sdk/extras/google/..
if you downloaded via the sdk manager.
Then reference by right clicking your project => selecting properties => Android => Add
Also, in your layout, change the xml namespace:
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
to: xmlns:ads="http://schemas.android.com/apk/res-auto"
Update:
The activity and meta-data declaration should be within the <application>
tag and not outside. So modify your manifest as follows:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="com.aotsinc.games.android.c2c.bible" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="Clues2BibleCharacter" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.ads.AdActivity" />
<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="4452000" />
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
Upvotes: 1