web-dev-qa-db-fra.com

Erreur de gonflage de la classe com.google.ads.AdView

Bonjour, je suis nouveau sur Android dev et admob. J'essaie de faire une application de test simple avec un bouton, quelques pages et admob au bas. Tout fonctionne bien jusqu'à ce que j'essaye d'implémenter admob. Voici mon code:

HelloAndroid.Java:

package com.manny.HelloAndroid;

import Android.app.Activity;
import Android.content.Intent;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.ImageView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    private static final int ACTIVITY_CREATE = 0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.main);
        ImageView image = (ImageView) findViewById(R.id.test_image);
        //image.setScaleType(ImageView.ScaleType.FIT_XY);

    }
    public void onClick(View v){
        Intent i = new Intent(this, HelloPage2.class);
        startActivityForResult(i, ACTIVITY_CREATE);
    }
}

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >

    <ImageView 
        Android:id="@+id/test_image"
        Android:src="@drawable/bak_vert_480x800"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:scaleType="fitXY"
        />

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/hello" />
    <ImageButton 
        Android:id="@+id/test_button"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/btn_arrow"
        Android:layout_marginLeft="100dp"
        Android:layout_marginTop="200dp"
        Android:onClick="onClick"
        />
     <com.google.ads.AdView Android:id="@+id/adView"
                         Android:layout_width="wrap_content"
                         Android:layout_height="wrap_content"
                         ads:adUnitId="b14be806e9ddf1f"
                         ads:adSize="BANNER"
                         ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
                         ads:loadAdOnCreate="true"/>

</RelativeLayout>

bonjour Android Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.manny.HelloAndroid"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk Android:minSdkVersion="7" 
        Android:targetSdkVersion="13"/>

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name" 
        Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen">
        <activity
            Android:name=".HelloAndroid"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />

                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            Android:name=".HelloPage2">
        </activity>
    <activity Android:name="com.google.ads.AdActivity"
                    Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|s    mallestScreenSize"/>
  </application>
  <uses-permission Android:name="Android.permission.INTERNET"/>
  <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

sortie logcat:

05-09 13:12:00.859: D/dalvikvm(24278): GC_EXTERNAL_ALLOC freed 51K, 44% free 3054K/5379K, external 2357K/2773K, paused 94ms
05-09 13:12:00.937: D/dalvikvm(24278): GC_EXTERNAL_ALLOC freed 1K, 44% free 3053K/5379K, external 3857K/4816K, paused 31ms
05-09 13:12:01.085: D/AndroidRuntime(24278): Shutting down VM
05-09 13:12:01.085: W/dalvikvm(24278): threadid=1: thread exiting with uncaught exception (group=0x4001e560)
05-09 13:12:01.109: E/AndroidRuntime(24278): FATAL EXCEPTION: main
05-09 13:12:01.109: E/AndroidRuntime(24278): Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.manny.HelloAndroid/com.manny.HelloAndroid.HelloAndroid}: Android.view.InflateException: Binary XML file line #30: Error inflating class com.google.ads.AdView
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1702)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1722)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread.access$1500(ActivityThread.Java:124)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:974)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.os.Handler.dispatchMessage(Handler.Java:99)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.os.Looper.loop(Looper.Java:130)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread.main(ActivityThread.Java:3821)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Java.lang.reflect.Method.invokeNative(Native Method)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Java.lang.reflect.Method.invoke(Method.Java:507)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:839)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:597)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at dalvik.system.NativeStart.main(Native Method)
05-09 13:12:01.109: E/AndroidRuntime(24278): Caused by: Android.view.InflateException: Binary XML file line #30: Error inflating class com.google.ads.AdView
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:581)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:623)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:408)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:320)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.inflate(LayoutInflater.Java:276)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:253)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.Activity.setContentView(Activity.Java:1716)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at com.manny.HelloAndroid.HelloAndroid.onCreate(HelloAndroid.Java:17)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1047)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1666)
05-09 13:12:01.109: E/AndroidRuntime(24278):    ... 11 more
05-09 13:12:01.109: E/AndroidRuntime(24278): Caused by: Java.lang.ClassNotFoundException: com.google.ads.AdView in loader dalvik.system.PathClassLoader[/data/app/com.manny.HelloAndroid-2.apk]
05-09 13:12:01.109: E/AndroidRuntime(24278):    at dalvik.system.PathClassLoader.findClass(PathClassLoader.Java:240)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:551)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.createView(LayoutInflater.Java:471)
05-09 13:12:01.109: E/AndroidRuntime(24278):    at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:570)
05-09 13:12:01.109: E/AndroidRuntime(24278):    ... 20 more
05-09 13:12:11.593: I/Process(24278): Sending signal. PID: 24278 SIG: 9

J'utilise GoogleAdMobAdsSdkAndroid-6.0.0. Encore une fois, je suis très novice dans ce domaine et j’ai essayé d’utiliser des exemples provenant de plusieurs sites, mais l’application continue de planter quand elle apparaît sur une page contenant le nom admob. Si quelqu'un peut m'aider, ce serait très apprécié. Je vous remercie. Si plus de code est nécessaire, faites le moi savoir.

21
classyhobo

Avez-vous récemment mis à jour vos outils Android à 17 ou plus? Si tel est le cas, vous devez créer un dossier libs/dans votre projet et placer physiquement le SDK dans le projet. Ou, dans le chemin de construction Java, vous devez commander et exporter le fichier jar du SDK.

Sinon, le fichier jar n'est pas inclus lorsque votre apk est compilé et tout l'enfer se déchaîne lorsque vous exécutez du code AdMob au moment de l'exécution.

REMARQUE: Ceci s'applique à toutes les bibliothèques référencées par votre projet.

58

Pour moi, cela a fonctionné comme ça.

  • fermer Eclipse
  • ajoutez manuellement le fichier sdk ad jar dans le dossier "libs" de votre projet
  • ouvrir Eclipse
  • actualise votre projet jusqu'à ce que le fichier jar sdk apparaisse dans le dossier libs
  • accédez aux propriétés de votre projet> Chemin de construction Java> Onglet Bibliothèque et choisissez "Ajouter des fichiers JAR" au lieu d'un fichier externe. et sélectionnez le sdk dans la liste ci-dessous.
  • allez dans l'onglet "Commander et exporter" et sélectionnez à nouveau le SDK
  • cliquez sur OK ET SON FAIT.

Ensuite, ajoutez simplement le code approprié dans le manifeste et le code XML. 

10
fromhead

J'éprouvais cela aussi. Le chemin de construction ne semblait pas fonctionner, peu importe ce que je faisais. J'ai donc quitté Eclipse et créé un nouveau dossier libs dans le répertoire du package de workbench. Ajout du fichier GoogleAdMobAdsSdk-6.0.1.jar à ce dossier. JE DID N'ajoute PAS l'ensemble du SDK, mais uniquement le fichier jar. Puis redémarré Eclipse. J'ai dû actualiser la colonne de l'inspecteur de projet pour afficher les modifications apportées en dehors d'Eclipse. Il montrait le nouveau dossier libs et le nouveau fichier jar, mais cela ne fonctionnait toujours pas ... Ensuite, j'ai cliqué avec le bouton droit de la souris sur le nouveau dossier libs et je l'ai défini en tant que SOURCE FOLDER. MAINTENANT TOUT FONCTIONNE! 

Utilisation de Eclipse Version: Indigo Service Release 2 Identifiant: 20120216-1857

Outils de développement Android 18.0.0.v201203301601-306762

Il semble que les outils sont peut-être en avance sur la documentation ... ou une sorte de bogue Eclipse ... Très aggravant! 

2
Barry

J'ai eu le même problème et j'ai remarqué qu'il est également important de commander la liste d'exportation.
C’est à moi, comme ça ça marche:

enter image description here

1
h3r3b

Ce que j'ai fait - travaille pour moi maintenant - API niveau 17 Pour admob:
- Ajoutez du code d'avis à votre mise en page avec l'ID approprié
- Ajoutez le code du manifeste Admob au fichier manifeste de votre projet
- Ajoutez un fichier .jar Jar GoogleAdmobAdsSDK externe .... à votre bibliothèque (dans le chemin Propriétés\Java)
- Cochez pour choisir GoogleAdmobAdsSDK .... jar dans l'onglet Order and Export
- Redémarrez votre ADT 

DEGUB = TRAVAILLER MAINTENANT.

0
Hanh Bui Sy

Dans Android Studio: 1. Collez le SDK Google AdMob dans le dossier libs de votre projet 2. Ajoutez une entrée à la section des dépendances de votre build.gradle pour le projet pointant vers le fichier .jar [. .____.] 3. Reconstruisez votre projet

dependencies {
...
compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar', '... other entries...')
}

Notez que la compilation de fichiers nécessite plusieurs entrées jar. Si vous avez déjà une entrée de fichiers de compilation, vous pouvez simplement y ajouter en séparant les entrées par une virgule.

0
mcohen75

La même erreur m’apparaît et j’ai résolu le problème en quelques étapes simples . Vous devez supprimer la dépendance appcombat de votre projet Pour supprimer le clic droit de votre projet-> Android-> supprimer le combat entre applications et vous assurer que vous avez sélectionné Android 4.2.2 , puis importez le fichier Google Admob dans votre projet.

0
rajesh v