2013-05-20 2 views
1

J'utilise un nouveau studio Android. J'ai fait une demande et fonctionne bien, maintenant je dois ajouter AdMob SDK. J'ai donc mis le jar dans le dossier 'libs' et faites un clic droit sur "add as library". Je lance le projet sur mon smartphone mais l'application se bloque au démarrage.Android Studio - Erreur de gonflement de la classe com.google.ads.AdView

Comment puis-je résoudre ce problème? Je pense que ce sera un problème avec l'importation d'AdMob sdk.

Merci!

C'est le 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> 

Ceci est la mise en page 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> 

Et c'est le 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) 

Si je cache le code AdMob dans la mise en page xml, l'application fonctionne correctement

merci!

+0

Quel est le journal des erreurs de l'accident? – Rotem

+0

poster votre stacktrace .. pas d'aide si vous ne postez pas le problème réel .. – Tarun

Répondre

1

Faites un clic droit sur votre projet et passez au Properties -> Java Build Path. Dans Libraries, ajoutez le fichier AdMob SDK jar et, dans Order and Export, vérifiez la bibliothèque AdMob SDK. Ensuite, nettoyez et réexécutez votre application.

Auparavant, mettre des bibliothèques tierces dans le dossier libs/suffisait à la version Android pour regrouper ces bibliothèques lors de la compilation de votre application. Mais depuis la sortie de la v22 des outils Android, vous devez maintenant ajouter explicitement la bibliothèque à votre chemin de compilation et l'exporter.

+0

Salut Eric, je ne peux pas faire ça .. J'utilise le nouveau Android Studio 0.1 et si je fais un clic droit sur le projet, je Impossible de trouver les propriétés et le chemin de génération Java. Comment as-tu fais ça? Merci – Nerd

+0

Ah, je ne suis pas familier avec Android Studio. Peut-être que [this] (http://stackoverflow.com/questions/16588389/android-libraries-in-android-studio) aidera. Il semble que la raison de cette erreur est que la bibliothèque AdMob n'est pas incluse lors de la création de votre fichier .apk. Vous aurez besoin de comprendre comment faire fonctionner cela dans le studio Android. –

+0

Ceci est la solution pour eclipse, pas pour Android Studio Preview. La bonne solution peut être vu dans mon post ci-dessus. – Chris623

1

J'étais le même et obtenir solution, je l'ai fait la même chose que vous et je vous manquez à faire exactement ce qui suit:

ouvrir un terminal (Windows ou Linux) et aller à la racine de votre projet, par exemple AndroidStudioProjects/MyProject

Exécutez la commande:

Linux (le fichier est gradlew): ./gradlew nettoyer

de Windows (le fichier est gradlew.bat): gradlew propre

Maintenant goto: Construire> Reconstruire le projet

C'est tout, profitez-en !!!

Désolé pour le mauvais anglais

+0

cela n'a pas fonctionné pour moi – Chris623

+0

a travaillé pour moi. studio android 0.3.0. Merci. –

7

il est un peu difficile mais voici la solution:

La version de prévisualisation en cours ne modifie pas le fichier build.gradle, même si vous avez ajouté la bibliothèque AdMob les dépendances dans le menu. Ce que vous pouvez faire est d'ajouter la dépendance manuellement, c'est très facile:

double-cliquez sur le fichier "build.gradle" sur la gauche dans le menu de navigation. Ajoutez la ligne suivante:

compiler des fichiers ('libs/GoogleAdMobAdsSdk-6.4.1.jar')

Il devrait ressembler à:

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 
    } 
} 
+0

Merci, pour moi cela a fonctionné avec Android Studio 130.716844 –

+0

J'ai fait ce que vous avez dit, mais j'ai encore eu la même erreur. Reconstruire le projet par la suite a résolu le problème. – MrIveck

0

Je suis même problem.I changé Android. pot à 4.2.2. Maintenant, il fonctionne très bien dans les deux émulateur et téléphone

0

Cela peut vous aider à intégrer AdMob avec votre application, mais Google ne va pas accepter toutes les applications mises à jour ou nouvelles qui utilisent ce type d'intégration AdMob 1 suivante Août 2014

Au lieu de cela, je vous recommande d'utiliser la version de Google Play Services comme suggéré dans le document ci-dessus.

0

Vous utilisez très probablement une mise en page AdView avec le nom de package com.google.ads.AdView. Changer à:

<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" 

     /> 

Je suis également Android Studio, avec la dépendance build.gradle configurés comme ceci:

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

aller de l'avant, nous ne sommes pas tenus d'ajouter manuellement libs qui ont déjà coordonnées Maven pour pointer vers, alors ne le faites PAS.

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