Обязательный атрибут XML "adSize" отсутствовал

Я получаю "Обязательный атрибут XML" adSize "отсутствует" при запуске приложения. Это написано на экране моего смартфона вместо моего баннера.

Я попробовал разные решения, основанные на стеке (например, xmlns:ads="http://schemas.android.com/apk/res-auto" вместо xmlns:ads="http://schemas.android.com/apk/libs/com.google.ads" или вместо xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"), но он не работает.

Вот мой java-код (простой Hello World, чтобы попытаться реализовать баннер):

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;
}
}

Вот мой 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>

и здесь мой манифест:

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

Я использую сервисную библиотеку google.

Ответ 1

Вот странный ответ. Я просто перезапустил свое затмение, и он смотрел на работу. Это может помочь кому-то.

Просто перезапустите eclipse или студию Android

Ответ 2

Попробуйте изменить свою декларацию следующим образом:

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

---- EDIT ----

Вы также можете попытаться сделать это программно. Просто, вместо элемента AdView layout, определите LinearLayout и по коду выполните примерно так:

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);

Ответ 3

У меня была такая же проблема, и я исправил ее с помощью ярлыков xmlns. Я разместил две метки "xmlns: ads" (один для "res-auto" в AdView и другой для "инструментов" в родительском макете). Мне пришлось использовать две метки для "res auto", одну с xmlns: app в FloatingActionButton и другую с xmlns: объявлениями в 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

У меня такая же проблема.

Решение для меня:

 xmlns:ads=""

изменено на

xmlns:ads="http://schemas.android.com/apk/res-auto"

Ответ 5

Проблема исправлена для меня путем изменения пространства имен URI

от

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

в

xmlns:ads="http://schemas.android.com/apk/res-auto"

Ответ 6

измените, как показано ниже .remove ads: 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"/>

проверить эту ссылку, он имеет ясный пример

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

Ответ 7

Это происходит, когда eclipse не удалось синхронизировать ваш xml с библиотекой воспроизведения Google, попробуйте очистить проект и перезапустить eclipse

Ответ 8

Juste очистите свое приложение!

Сборка → Чистый проект

Сообщение исчезает.

Ответ 9

добавить это в манифест андроида:

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

он решает мою проблему, я надеюсь, что он решит вашу проблему:)

Ответ 10

Оказывается, вы НЕ МОЖЕТ использовать wrap_content как размер, поэтому вам нужно указать его размер. Мои объявления не работали, и после дня поиска в Интернете я изменил свой

android:layout_height="wrap_content"

к

android:layout_height="100dp"

и это устранило проблему. Постскриптум "match_parent" работает (у меня есть этот набор для моей ширины)

Ответ 11

Проверьте также DEIVCE_ID_EMULATOR, как и в моем коде. У меня есть следующий код из руководства Google:

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

В моем случае я тестировал его на реальном устройстве, чтобы он никогда не появлялся, а просто дал мне сообщение о том, что агитация не установлена. Я подбежал к эмулятору, и решение nkn отлично работает.

Вот мой полный код: В основной деятельности:

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

и мой 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>

СЕЙЧАС запустите приложение на своем устройстве и проверьте свой логарифм, так как он отобразит строку: I/Ads: используйте

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

Скопируйте этот идентификатор (РАЗЛИЧИЙ ДЛЯ ВАШЕГО УСТРОЙСТВА) в .addTestDevice следующим образом:

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

И вот как я исправил эту проблему в моем случае.

Надеюсь, что это поможет.

Ответ 12

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

Ответ 13

Я столкнулся с той же ошибкой. но я не мог это исправить с помощью закрепленного ответа. Я изменил XML, чтобы быть таким.

<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"
  android:layout_centerHorizontal="true"
  android:layout_alignParentBottom="true"
  ads:adSize="BANNER"
  ads:adUnitId = "ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

Основные изменения: xmlns:ads="http://schemas.android.com/apk/res-auto" и ads:adSize="BANNER". Я записал экран своего ноутбука при решении этой проблемы. Так что если вам нравятся наглядные иллюстрации, вы можете посмотреть видео на YouTube.