it-roy-ru.com

Ошибка надувания класса com.google.ads.AdView

Здравствуйте, я новичок в Android Dev и AdMob. Я пытаюсь сделать простое тестовое приложение с кнопкой, парой страниц и admob внизу. Все работает нормально, пока я не попробую реализовать admob. Вот мой код:

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>

привет манифест Android:

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

Результат 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

Я использую GoogleAdMobAdsSdkAndroid-6.0.0. Опять же, я очень новичок в этом, и я попытался использовать примеры с нескольких сайтов, но приложение продолжает падать, когда оно попадает на страницу с admob в нем. Если кто-то может помочь мне, это будет высоко ценится. Спасибо. Если нужно больше кода, дайте мне знать.

21
classyhobo

Недавно вы обновили Android Tools до версии 17 или выше? Если это так, вам нужно создать папку libs/в вашем проекте и физически поместить SDK в проект. Или в пути сборки Java вы должны заказать и экспортировать jar SDK.

В противном случае, jar не будет включен, когда ваш apk будет скомпилирован, и весь ад откроется, когда вы запускаете код AdMob во время выполнения.

ПРИМЕЧАНИЕ. Это относится к любой библиотеке, на которую ссылается ваш проект.

58
Eric Leichtenschlag

Для меня это сработало так.

  • закрыть Затмение
  • добавьте вручную файл SDK Ad JAR в папку вашего проекта "libs"
  • открыть затмение
  • обновите ваш проект, пока в папке libs не появится sdk jar
  • перейдите в свойства вашего проекта> Путь сборки Java> вкладка «Библиотека» и выберите «добавить Jars» вместо внешнего. и выберите SDK из списка ниже.
  • перейдите на вкладку «Заказ и экспорт» и снова выберите SDK
  • нажмите ОК И ЕГО СДЕЛАНО.

Затем просто добавьте правильный код в манифест и XML. 

10
fromhead

Я тоже это переживал. Кажется, путь сборки не работает, независимо от того, что я сделал. Поэтому я вышел из Eclipse, создал новую папку libs в каталоге пакета workbench. Добавил GoogleAdMobAdsSdk-6.0.1.jar в эту папку. Я DID НЕ добавляю весь SDK, только файл jar. Затем перезапустил Eclipse. Мне пришлось обновить столбец инспектора проекта, чтобы показать изменения, которые я сделал за пределами Eclipse. Он показывал новую папку libs и файл jar, но он все еще не работал ... Затем я щелкнул правой кнопкой мыши на новой папке libs и установил ее в качестве папки SOURCE. СЕЙЧАС ВСЕ РАБОТАЕТ! 

Я использую версию Eclipse: Indigo Service Release 2.__ ID сборки: 20120216-1857

Инструменты разработки Android 18.0.0.v201203301601-306762

Кажется, что, возможно, инструменты опередили документацию ... или какую-то ошибку в Eclipse .... Очень отягчающее! 

2
Barry

У меня была та же проблема, и я заметил, что заказ списка экспорта также важен.
Это мое, вот так это работает:

enter image description here

1
h3r3b

То, что я сделал - сейчас работает для меня - API Level 17 Для admob:
- Добавьте рекламный код в свой макет с соответствующим идентификатором.
- Добавьте код манифеста Admob в файл манифеста вашего проекта.
- Добавьте внешний Jar-файл GoogleAdmobAdsSDK .... jar в свою библиотеку (в свойствах\путь сборки Java)
- Установите флажок, чтобы выбрать GoogleAdmobAdsSDK .... jar на вкладке "Порядок и экспорт".
- Перезагрузите ADT 

DEGUB = РАБОТАЕТ СЕЙЧАС.

0
Hanh Bui Sy

В Android Studio: 1. Вставьте Google AdMob SDK в папку libs для своего проекта 2. Добавьте запись в раздел зависимостей вашего build.gradle для проекта, указывающего на jar . 3. Перестройте свой проект

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

Обратите внимание, что для компиляции файлов требуется несколько записей jar. Если у вас уже есть запись скомпилированных файлов, вы можете просто добавить ее, разделяя записи запятой.

0
mcohen75

Мне кажется, что та же самая ошибка, и я решил ее с помощью нескольких простых шагов Вам нужно удалить зависимость appcombat из вашего проекта Для удаления щелкните правой кнопкой мыши ваш проект-> Android-> удалить бой приложения и убедитесь, что вы выбрали Android 4.2.2 И затем импортируйте gar admob jar в ваш проект.

0
rajesh v