2012-05-09 12 views
21

Hola, soy nuevo en android dev y admob. Estoy intentando hacer una aplicación de prueba simple con un botón, un par de páginas y un admob en la parte inferior. Todo funciona bien hasta que intento implementar AdMob. Aquí está mi código:Error al inflar la clase com.google.ads.AdView

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> 

hola manifiesto de 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> 

salida 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 

Estoy usando GoogleAdMobAdsSdkAndroid-6.0.0. Una vez más, soy muy nuevo en esto y he intentado utilizar ejemplos en varios sitios, pero la aplicación sigue bloqueándose cuando entra en una página con admob. Si alguien puede ayudarme, sería muy apreciado. Gracias. Si se necesita más código, avíseme.

+0

Me parece que su jar de AdMob SDK no está incluido en su APK. ¿Qué IDE estás usando? – EpicOfChaos

+0

Versión de Eclipse: Service Release 2 de Helios – classyhobo

Respuesta

58

¿Ha actualizado recientemente sus herramientas de Android a r17 o superior? Si es así, debe crear una carpeta libs/en su proyecto y colocar físicamente el SDK en el proyecto. O bien, en la ruta de compilación de Java, debe solicitar y exportar el jar de SDK.

De lo contrario, el jar no se incluye cuando se compila tu apk, y todo se dispara cuando ejecuta el código de AdMob en tiempo de ejecución.

NOTA: Esto se aplica a cualquier biblioteca a la que haga referencia su proyecto.

+7

Gracias, lo había agregado a los contenedores externos pero no lo ordené ni lo exporté. – classyhobo

+0

yah mee también, creé una carpeta de libs y copié y pegué la biblioteca y funciona bien ahora. No lo ordené y lo exporté. –

+0

Señor, ¿me puede sugerir http://stackoverflow.com/questions/25178044/android-admob-is-there-any-violation-to-remove-resources-from-google-play-serv –

2

Estaba pasando por esto también. La ruta de compilación no pareció funcionar sin importar lo que hice. Así que salí de Eclipse, creé una nueva carpeta de libs en el directorio del paquete del banco de trabajo. Se agregó GoogleAdMobAdsSdk-6.0.1.jar a esa carpeta. NO AÑADÍ todo el SDK, solo el archivo jar. Luego reinició Eclipse. Tuve que actualizar la columna del inspector del proyecto para mostrar los cambios que hice fuera de Eclipse. Mostraba la nueva carpeta libs y el archivo jar, pero aún no funcionaba ... Luego, hice clic derecho en la nueva carpeta libs y la configuré como una CARPETA FUENTE. ¡AHORA TODO FUNCIONA!

Im usando Eclipse Versión: Indigo Service Release 2 Build ID: 20120216-1857

Android Development Tools 18.0.0.v201203301601-306762

Parece que a lo mejor las herramientas están por delante de la documentación. ... o algún tipo de error de Eclipse ... ¡Muy irritante!

1

Tuve el mismo problema y noté que ordenar la lista de exportación también es importante.
Esto es mío, de esta manera funciona:

enter image description here

+0

Actualicé desde Admob 6.2.1 a 6.3.1 (rev. 10) y Vi el error "Error al inflar la clase com.google.ads.AdView", que no se corrigió simplemente colocando una marca junto a GoogleAdMobAdsSdk en la parte inferior de la lista "Ordenar y exportar". Gracias por tu captura de pantalla! ¡Mover el SDK de AdMobAds al principio de la lista funcionó! –

0

Lo que hice - está trabajando para mí ahora - API nivel 17 Para admob:
- Añadir un código AdView a su diseño con una identificación apropiada
- Agregue código de manifiesto de Admob al archivo de manifiesto de su proyecto
- Agregue un archivo externo de GoogleAdmobAdsSDK .... Jar Jar a su Biblioteca (en Propiedades \ Ruta de creación de Java)
- Marque para elegir GoogleAdmobAdsSDK ....jar en pestaña Orden y exportación
- Reinicie su ADT

DEGUB = WORKING NOW.

10

Para mí funcionó así.

  • cerca de eclipsar
  • añadir manualmente el archivo jar anuncio SDK en "bibliotecas" de su proyecto carpeta
  • Eclipse abierta
  • refrescar su proyecto hasta el frasco SDK aparece en librerías carpeta
  • ir a su propiedades del proyecto> Ruta de creación de Java> Pestaña Biblioteca y elija "agregar tarros" en lugar de uno externo. y seleccione el SDK de la lista a continuación.
  • vaya a la pestaña "Ordenar y Exportar" y seleccione de nuevo el SDK
  • haga clic en Aceptar Y HECHO.

A continuación, solo agregue el código correcto en el manifiesto y el xml.

+0

Esto funcionó para mí. ¡Gracias! – Si8

+0

Reiniciar eclipse me ayudó finalmente después de hacer todas las cosas. – aditya

0

En Android Studio: 1. Pegue el SDK de Google AdMob en la carpeta libs de su proyecto 2. Agregue una entrada a la sección de dependencias de su build.gradle para el proyecto que apunta al contenedor. 3. reconstruir su proyecto

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

Tenga en cuenta que compilan los archivos se lleva a múltiples entradas tarro. Si ya tiene una entrada de archivos de compilación, puede agregarla separando las entradas con una coma.

0

aparece el mismo error para mí y resuelve con unos sencillos pasos Es necesario eliminar la dependencia appcombat de su proyecto para la eliminación de clic derecho sobre el proyecto-> Android-> eliminar el combate aplicación y asegúrese de que haya seleccionado androide 4.2.2 y luego importe el archivo google admob en su proyecto.

Cuestiones relacionadas