webentwicklung-frage-antwort-db.com.de

Fehler beim Aufblasen der Klasse com.google.ads.AdView

Hallo, ich bin neu bei Android dev und admob. Ich versuche, eine einfache Test-App mit einem Button, ein paar Seiten und Admob im unteren Bereich zu erstellen. Alles funktioniert gut, bis ich versuche, Admob zu implementieren. Hier ist mein Code:

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>

hallo Android Manifest:

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

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

Ich verwende GoogleAdMobAdsSdkAndroid-6.0.0. Ich bin noch einmal sehr neu in diesem Bereich und habe versucht, Beispiele von mehreren Seiten zu verwenden, aber die App stürzt weiter ab, wenn sie eine Seite mit Admob drückt. Wenn mir jemand helfen kann, wäre ich sehr dankbar. Vielen Dank. Wenn mehr Code benötigt wird, lassen Sie es mich wissen.

21
classyhobo

Haben Sie kürzlich Ihre Android Tools auf R17 oder höher aktualisiert? In diesem Fall müssen Sie einen libs/-Ordner in Ihrem Projekt erstellen und das SDK physisch in das Projekt einfügen. Oder Sie müssen im Java-Erstellungspfad die SDK-Dose bestellen und exportieren.

Andernfalls wird das Glas nicht eingeschlossen, wenn Ihr Apk kompiliert wird. Wenn Sie zur Laufzeit AdMob-Code ausführen, wird die Hölle los.

HINWEIS: Dies gilt für alle Bibliotheken, auf die Ihr Projekt verweist.

58

Für mich hat es so funktioniert.

  • schließen Sie Eclipse
  • fügen Sie die Sdk-AD-JAR-Datei manuell im Ordner "libs" Ihres Projekts hinzu
  • eclipse öffnen
  • aktualisieren Sie Ihr Projekt, bis der Sdk-Behälter im Ordner libs angezeigt wird
  • gehen Sie zu den Eigenschaften Ihres Projekts> Java Build Path> Library Tab und wählen Sie "Jars hinzufügen" statt eines externen. und wählen Sie die SDK aus der Liste unten.
  • gehen Sie auf die Registerkarte "Bestellen und Exportieren" und wählen Sie erneut das SDK aus
  • klicken Sie auf OK und fertig.

Dann fügen Sie einfach den richtigen Code in das Manifest und die XML-Datei ein. 

10
fromhead

Das habe ich auch erlebt. Der Build-Pfad schien nicht zu funktionieren, egal was ich tat. Also habe ich Eclipse beendet und einen neuen libs-Ordner im Paketverzeichnis der Workbench erstellt. Die GoogleAdMobAdsSdk-6.0.1.jar wurde diesem Ordner hinzugefügt. Ich DID füge NICHT das gesamte SDK hinzu, sondern nur die JAR-Datei. Dann wurde Eclipse erneut gestartet. Ich musste die Spalte des Projektinspektors aktualisieren, um die Änderungen anzuzeigen, die ich außerhalb von Eclipse vorgenommen habe. Es zeigte den neuen Libs-Ordner und die JAR-Datei, aber es funktionierte immer noch nicht. Dann habe ich mit der rechten Maustaste auf den neuen Libs-Ordner geklickt und ihn als Quellordner gesetzt. JETZT ALLES FUNKTIONIERT! 

Ich verwende Eclipse-Version: Indigo Service Release 2 Build id: 20120216-1857

Android-Entwicklungstools 18.0.0.v201203301601-306762

Es scheint, dass die Tools vielleicht der Dokumentation voraus sind ... oder eine Art Eclipse-Bug ... Sehr ärgerlich! 

2
Barry

Ich hatte das gleiche Problem und bemerkte, dass die Bestellung der Exportliste ebenfalls wichtig ist.
Das ist meins, so funktioniert es:

enter image description here

1
h3r3b

Was ich getan habe - arbeitet jetzt für mich - API Level 17 Für Admob:
- Fügen Sie Ihrem Layout einen Adview-Code mit der entsprechenden ID hinzu
- Hinzufügen von Admob-Manifestcode zu Ihrer Projektmanifestdatei
- Fügen Sie Ihrer Library eine externe GoogleAdmobAdsSDK .... Jar-Jar-Datei hinzu (in Properties\Java Build-Pfad).
- Aktivieren Sie das Kontrollkästchen GoogleAdmobAdsSDK .... in der Registerkarte Bestellen und Exportieren
- Starten Sie Ihren ADT neu 

DEGUB = JETZT ARBEITEN.

0
Hanh Bui Sy

In Android Studio: 1. Fügen Sie das Google AdMob-SDK in den libs-Ordner Ihres Projekts ein. 2. Fügen Sie im Abhängigkeitsbereich Ihres Build.gradle-Objekts einen Eintrag für das Projekt hinzu, das auf das jar zeigt. .____.] 3. Erstellen Sie Ihr Projekt neu

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

Beachten Sie, dass Kompilierungsdateien mehrere Jar-Einträge erfordern. Wenn Sie bereits einen Eintrag für Kompilierungsdateien haben, können Sie ihn einfach hinzufügen, indem Sie die Einträge durch ein Komma trennen.

0
mcohen75

Der gleiche Fehler erscheint mir und ich habe es mit ein paar einfachen Schritten gelöst. Sie müssen die Appcombat-Abhängigkeit aus Ihrem Projekt Entfernen. Klicken Sie dazu mit der rechten Maustaste auf Ihr Projekt-> Android-> App-Kampf entfernen und stellen Sie sicher Sie haben Android 4.2.2 ausgewählt und importieren die google admob jar in Ihr Projekt.

0
rajesh v