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.
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
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);
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>
J'ai le même problème.
Solution pour moi:
xmlns:ads=""
changé en
xmlns:ads="http://schemas.Android.com/apk/res-auto"
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"
Il suffit de nettoyer votre application!
Construire -> Projet propre
Le message disparaît.
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
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
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 :)
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)
<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" />
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.