2012-03-22 18 views
5

Ricevo un'eccezione ClassNotFound molto fastidiosa durante il tentativo di implementare un banner admob nella mia app Android, utilizzando admob sdk 4.3.1. Ho usato la seguente implementazione:ClassNotFound durante il tentativo di implementare il banner AdMob

manifesto:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.xxx" 
    android:versionCode="1" 

    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="10" 

     /> 
.... 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

    <activity android:name="com.google.ads.AdActivity" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> 

main.xml:

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

    android:id="@+id/bigmainlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/grey"> 
<com.google.ads.AdView android:id="@+id/adView" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         ads:adUnitId="xxxx" 
         ads:adSize="BANNER" 
         ads:testDevices="TEST_EMULATOR" 
         ads:loadAdOnCreate="true"/> 
</LinearLayout> 

Project.properties

target=android-14 

Errore:

03-21 22:00:25.993: E/AndroidRuntime(333): FATAL EXCEPTION: main 03-21 22:00:25.993: E/AndroidRuntime(333): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxx/com.xxxx.MainActivity}: android.view.InflateException: Binary XML file line #125: Error inflating class com.google.ads.AdView 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.os.Handler.dispatchMessage(Handler.java:99) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.os.Looper.loop(Looper.java:123) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread.main(ActivityThread.java:3683) 03-21 22:00:25.993: E/AndroidRuntime(333): at java.lang.reflect.Method.invokeNative(Native Method) 03-21 22:00:25.993: E/AndroidRuntime(333): at java.lang.reflect.Method.invoke(Method.java:507) 03-21 22:00:25.993: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-21 22:00:25.993: E/AndroidRuntime(333): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-21 22:00:25.993: E/AndroidRuntime(333): at dalvik.system.NativeStart.main(Native Method) 03-21 22:00:25.993: E/AndroidRuntime(333): Caused by: android.view.InflateException: Binary XML file line #125: Error inflating class com.google.ads.AdView 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 03-21 22:00:25.993: E/AndroidRuntime(333): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.Activity.setContentView(Activity.java:1657) 03-21 22:00:25.993: E/AndroidRuntime(333): at com.xxxx.MainActivity.onCreate(FreeMedsActivity.java:55) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 03-21 22:00:25.993: E/AndroidRuntime(333): ... 11 more 03-21 22:00:25.993: E/AndroidRuntime(333): Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView in loader dalvik.system.PathClassLoader[/data/app/com.xxxx-2.apk] 03-21 22:00:25.993: E/AndroidRuntime(333): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 03-21 22:00:25.993: E/AndroidRuntime(333): at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 03-21 22:00:25.993: E/AndroidRuntime(333): at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.createView(LayoutInflater.java:471) 03-21 22:00:25.993: E/AndroidRuntime(333): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570

)

ottengo un'eccezione ClassNotFound simile durante la creazione del ADView nel codice e aggiungerlo al layout. Ottengo questo errore su OS 2.2, 2.3.3, 2.3.7 e 4.0. Ho aggiunto il admobsdk.jar al percorso di generazione. Ho provato a passare minSSdkVersion a 14. Sto usando eclipse indigo.

Mi chiedo se questo ha a che fare con come sto aggiungendo il .jar. L'ho copiato in una cartella/lib nel progetto, e poi si aggiunge al percorso di creazione o alle preferenze -> percorso di creazione -> aggiungi JAR. Mi chiedo se in qualche modo l'app non sappia dove trovare il .jar ancora ...

+0

Hai provato ad aggiungere un jar esterno sotto configure build path? – Benoir

+0

Usi proguard? – NguyenDat

+0

@Benoir: sì, ho aggiunto il vaso in questo modo – benbeel

risposta

14

Risulta che il r17 di Android Tools richiede che la cartella /lib sia /libs e che l'SDK deve essere posizionato lì e referenziato internamente per poter essere incluso nell'apk.

Per ulteriori informazioni, consultare this link.

+0

Lei signore è incredibile. Perché dovrebbero cambiare la denominazione della cartella ?! – benbeel

+3

Di cui non sono sicuro. La cosa più deludente è il fatto che hai bisogno di una cartella/libs. Per me è ideale avere una libreria/cartella a cui tutti i miei progetti possano fare riferimento, invece di aver bisogno di una copia del contenitore dell'SDK AdMob per ogni progetto che scrivo. –

+0

Sembra che questo problema non sia stato risolto nell'ultima versione dell'SDK ... – dumbfingers

6

Ho lo stesso problema ero risolvere il problema in Eclipse di Progetto -> Clean Progetto -> rendere proprietario -> Java percorso di generazione -> Ordine e Export (Check vaso googleAdmod) Spero che questo aiuto!

+0

Ha funzionato anche per me. Ho avuto un progetto esistente che ho aggiunto anche Action Bar Sherlock e ho ricevuto questo errore. – Gerald

Problemi correlati