web-dev-qa-db-fra.com

L'attribut XML requis "adSize" était manquant.

Je reçois un "attribut XML requis" "la taille adSize" était manquante "lorsque je lance mon application. Ceci est écrit sur l'écran de mon smartphone au lieu de ma bannière. 

J'ai essayé les différentes solutions basées sur la pile (comme xmlns:ads="http://schemas.Android.com/apk/res-auto" au lieu de xmlns:ads="http://schemas.Android.com/apk/libs/com.google.ads" ou au lieu de xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads") mais cela ne fonctionne pas.

Voici mon code Java (un simple Hello World juste pour essayer d'implémenter une bannière):

package com.example.publicite;

import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

Voici mon fichier XML:

<RelativeLayout 
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:ads="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/hello_world" />

<com.google.Android.gms.ads.AdView
    xmlns:ads="http://schemas.Android.com/apk/libs/com.google.ads"
    Android:id="@+id/adView"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="MyAdUnitId"
    ads:loadAdOnCreate="true"
    ads:testDevices="TEST_EMULATOR" />

<Button
    Android:id="@+id/votrescore"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="..." />

</RelativeLayout>

et voici mon manifeste:

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

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

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >

    <meta-data Android:name="com.google.Android.gms.version"
               Android:value="@integer/google_play_services_version"/>

    <activity
        Android:name="com.example.publicite.MainActivity"
        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="com.google.Android.gms.ads.AdActivity"
        Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />

 </manifest>

J'utilise le service de jeu google lib.

16
Glork

Voici une réponse étrange. Je viens de redémarrer mon Eclipse et il a commencé à fonctionner. Cela pourrait aider quelqu'un. 

Il suffit de redémarrer Eclipse ou le studio Android

7
zizutg

Essayez de changer votre déclaration de cette façon:

<com.google.Android.gms.ads.AdView
    xmlns:ads="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/adView"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    ads:adUnitId="YOUR_AD_UNIT_ID"
    ads:adSize="BANNER"/>

---- MODIFIER ----

Vous pouvez également essayer de le faire par programme. Simplement, au lieu d’un élément de présentation AdView, définissez une LinearLayout et procédez comme suit:

final AdView adView = new AdView(getActivity());
adView.setAdUnitId("YourId");
adView.setAdSize(AdSize.BANNER);

final LinearLayout adLinLay = (LinearLayout) view.findViewById(R.id.your_defined_linearlayout);
adLinLay.addView(adView);

final AdRequest.Builder adReq = new AdRequest.Builder();
final AdRequest adRequest = adReq.build();
adView.loadAd(adRequest);
29
nKn

J'ai eu le même problème et je l'ai corrigé avec les étiquettes xmlns. Je mets deux étiquettes "xmlns: ads" (une pour "res-auto" dans AdView et l'autre pour "outils" dans la présentation parente). J'ai dû utiliser deux étiquettes pour "res auto", une avec xmlns: app dans le FloatingActionButton et l'autre avec xmlns: ads dans le AdView:

<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:ads="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fitsSystemWindows="true">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/appbar"
        Android:layout_width="match_parent"
        Android:layout_height="@dimen/fragment_start_margin"
        Android:background="@drawable/fondo_proyectos"
        Android:elevation="4dp"
        Android:gravity="bottom"
        Android:minHeight="@dimen/toolbar_height">
    </Android.support.v7.widget.Toolbar>

    <com.google.Android.gms.ads.AdView
        xmlns:ads="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/av_bottom_banner"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_inferior_ad_unit_id"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true"
        />

    <Android.support.design.widget.CoordinatorLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_above="@+id/av_bottom_banner"
        Android:fitsSystemWindows="true">

        <Android.support.design.widget.FloatingActionButton
            xmlns:app="http://schemas.Android.com/apk/res-auto"
            Android:id="@+id/fab"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_above="@+id/av_bottom_banner"
            Android:layout_alignParentEnd="true"
            Android:layout_gravity="bottom|end"
            Android:layout_marginLeft="@dimen/fab_margin"
            Android:layout_marginRight="@dimen/fab_margin"
            Android:elevation="4dp"
            Android:src="@Android:drawable/ic_input_add"
            Android:tint="@Android:color/white"
            app:fabSize="normal"
            app:srcCompat="@drawable/ic_account_circle" />

        <include layout="@layout/proyecto_content" />

    </Android.support.design.widget.CoordinatorLayout>

</RelativeLayout>
4
joselquin

J'ai le même problème.

Solution pour moi:

 xmlns:ads=""

changé en

xmlns:ads="http://schemas.Android.com/apk/res-auto"
2
ketom

Problème résolu pour moi en changeant l'espace de noms uri

de 

 xmlns:ads="http://schemas.Android.com/apk/lib/com.google.ads"

à

xmlns:ads="http://schemas.Android.com/apk/res-auto"
2
Kartik_Agarwal

Il suffit de nettoyer votre application! 

Construire -> Projet propre

Le message disparaît.

1
FeelCode

changer comme ci-dessous .. supprimer les annonces: loadAdOnCreate = "true"

   <com.google.Android.gms.ads.AdView
    Android:id="@+id/adView"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    ads:adSize="BANNER"
    ads:adUnitId="MyAdUnitId"/>

vérifiez ce lien, il a un exemple clair

https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals#play

1
Libin

Cela se produit lorsque Eclipse n'a pas réussi à synchroniser votre fichier XML avec la bibliothèque Google Play, essayez de nettoyer le projet et redémarrez Eclipse

1
Nino Frenn

ajoutez ceci dans le manifeste Android:

<application
    Android:allowBackup="true"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme">

    <meta-data
        Android:name="com.google.Android.gms.version"
        Android:value="@integer/google_play_services_version" />

    <activity
        Android:name="com.google.Android.gms.ads.AdActivity"
        Android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        Android:theme="@Android:style/Theme.Translucent" />

Android: theme = "@ Android: style/Theme.Translucent"

ça résoud mon problème, j'espère que ça résoudra le tien :)

0
metomero

Il s'avère que vousNE POUVEZ PASutiliser wrap_content en tant que taille, vous devez donc lui attribuer une taille . Mes annonces ne fonctionnaient pas et, après une journée passée à googler, j'ai modifié mon 

Android:layout_height="wrap_content"

à

Android:layout_height="100dp"

et il a résolu le problème . P.S. "match_parent" fonctionne (je l'ai défini pour ma largeur)

0
Justin
<com.google.Android.gms.ads.AdView xmlns:ads="http://schemas.Android.com/apk/res-auto"
        Android:id="@+id/adMobBanner"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544/6300978111"`enter code here`
        Android:layout_centerVertical="true" />
0
Nandam Neeraj

Recherchez DEIVCE_ID_EMULATOR également, car dans mon code, le code suivant provient du didacticiel de Google:

AdRequest adRequest = new AdRequest.Builder()
     .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
     .build();

Dans mon cas, je le testais sur un vrai périphérique, ce qui ne l'a jamais fait apparaître, mais m'a simplement indiqué que l'adsize n'était pas défini .. J'ai lancé un émulateur et la solution de nkn fonctionne parfaitement.

Voici mon code complet: Dans l'activité principale:

AdView adView = (AdView)findViewById(R.id.adView);
AdRequest adRequest = newAdRequest.Builder()
     .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
     .build();
adView.loadAd(adRequest);

et mon XML:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content">

    <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="@string/UNIT_ID"
        ads:adSize="BANNER"/>
</LinearLayout>

Maintenant, lancez l'application sur votre appareil et vérifiez votre logcat car il affichera la ligne: I/Ads: Use 

AdRequest.Builder.addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
to get test ads on this device.

Copiez cet identifiant (DIFFERENT POUR VOTRE APPAREIL) dans le .addTestDevice comme suit:

AdView adView = (AdView)findViewById(R.id.adView);
    AdRequest adRequest = newAdRequest.Builder()
         .addTestDevice("33BE2250B43518CCDA7DE426D04EE232")
         .build();
    adView.loadAd(adRequest);

ET C’est ainsi que j’ai réglé ce problème dans mon cas.

J'espère que ça aide.

0
timv