получение фатального исключения, вызванного admob

У меня есть приложение на рынке, использующее admob, и теперь я хотел бы обновить свое приложение. Когда я тестирую эту новую версию, я получаю фатальное исключение, вызванное admob.

04-06 15:09:04.123: E/AndroidRuntime(409): Caused by: android.view.InflateException: Binary XML file line #51: Error inflating class com.google.ads.AdView


04-06 15:09:04.123: E/AndroidRuntime(409): Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView in loader dalvik.system.PathClassLoader[/data/app/com.kmbdev.purrkitty-2.apk]

Вот файл xml со строкой № 51:

  <com.google.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/bottom_border"
    android:layout_toLeftOf="@id/right_border"
    ads:adSize="BANNER"
    ads:adUnitId="my id"
    ads:loadAdOnCreate="true" />

Я не внес каких-либо существенных изменений по сравнению с исходным опубликованным приложением. Я добавил только заставку и некоторые файлы языковых строк и изменил версию на 1.2, опубликованное приложение — версия 1.1. Мне было интересно, почему это приложение больше не будет работать.

Попробовал еще раз, вот лог:

04-11 12:13:21.474: D/AndroidRuntime(282): Shutting down VM
04-11 12:13:21.474: W/dalvikvm(282): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
04-11 12:13:21.644: E/AndroidRuntime(282): FATAL EXCEPTION: main
04-11 12:13:21.644: E/AndroidRuntime(282): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kmbdev.purrkitty/com.kmbdev.purrkitty.Cat1}: android.view.InflateException: Binary XML file line #52: Error inflating class com.google.ads.AdView
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.os.Looper.loop(Looper.java:123)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-11 12:13:21.644: E/AndroidRuntime(282):  at java.lang.reflect.Method.invokeNative(Native Method)
04-11 12:13:21.644: E/AndroidRuntime(282):  at java.lang.reflect.Method.invoke(Method.java:521)
04-11 12:13:21.644: E/AndroidRuntime(282):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-11 12:13:21.644: E/AndroidRuntime(282):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-11 12:13:21.644: E/AndroidRuntime(282):  at dalvik.system.NativeStart.main(Native Method)
04-11 12:13:21.644: E/AndroidRuntime(282): Caused by: android.view.InflateException: Binary XML file line #52: Error inflating class com.google.ads.AdView
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-11 12:13:21.644: E/AndroidRuntime(282):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.Activity.setContentView(Activity.java:1647)
04-11 12:13:21.644: E/AndroidRuntime(282):  at com.kmbdev.purrkitty.Cat1.onCreate(Cat1.java:25)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-11 12:13:21.644: E/AndroidRuntime(282):  ... 11 more
04-11 12:13:21.644: E/AndroidRuntime(282): Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView in loader dalvik.system.PathClassLoader[/data/app/com.kmbdev.purrkitty-2.apk]
04-11 12:13:21.644: E/AndroidRuntime(282):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
04-11 12:13:21.644: E/AndroidRuntime(282):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
04-11 12:13:21.644: E/AndroidRuntime(282):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.createView(LayoutInflater.java:466)
04-11 12:13:21.644: E/AndroidRuntime(282):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
04-11 12:13:21.644: E/AndroidRuntime(282):  ... 20 more

person kmb    schedule 06.04.2012    source источник
comment
используйте com.admob.android.ads.AdView вместо com.google.ads.AdView   -  person ρяσѕρєя K    schedule 06.04.2012
comment
решено или нет, вы все еще получаете ошибку?   -  person ρяσѕρєя K    schedule 06.04.2012
comment
com.google.ads.AdView - правильное пространство имен. Вы недавно обновились до r17 инструментов Android? Если это так, начиная с r17, вам нужно создать каталог libs/ в своем проекте и поместить все файлы jar, на которые вы ссылаетесь, в этот каталог, иначе они не будут добавлены при создании apk.   -  person Eric Leichtenschlag    schedule 06.04.2012
comment
Вы обновили ADT до версии 17? См. stackoverflow.com/questions/9904614/   -  person Hounshell    schedule 07.04.2012
comment
Я добавил журнал с моей последней попытки. У меня есть каталог libs и там есть банка admob.   -  person kmb    schedule 11.04.2012


Ответы (5)


У меня такая же проблема, и я потратил более 3 часов, чтобы понять это. Наконец, я нашел способ заставить его работать.

  1. изменить имя SDK с GoogleAdMobAdsSdk-6.0.0.jar на GoogleAdMobAdsSdk.jar
  2. создайте папку «libs» в проекте, скопируйте вышеуказанный sdk в папку и свяжите библиотеку, используя «Добавить внешние JAR».
  3. если не работает, измените имя класса импорта с com.google.ads.* на com.google.ads.AdRequest, comp.google.ads.AdView и т. д.
person San    schedule 21.04.2012
comment
Как именно вы подключаете библиотеку. У меня все еще есть проблемы. Я изменил имя SDK и скопировал его в папку libs. Я зашел в рекламные внешние банки и нашел файл на своем компьютере. - person kmb; 23.04.2012
comment
Спасибо всем за ваши идеи. Наконец-то я заработал. Кое как было 2 разных баночки для адмоба. 1 один в каталоге libs, а другой через добавление внешней банки. Не уверен, как это произошло. - person kmb; 24.04.2012
comment
Да, я решил свою проблему, выполнив шаги 1 и 2. Но на шаге 2 я просто скопировал GoogleAdMobAdsSdk.jar с помощью Copy/Paste в libs. Как именно вы связываете библиотеку с помощью добавления внешних JAR-файлов в libs? Я сделал это в ProjectName->Properties->Java BuildPath - person AlexAndro; 31.05.2012
comment
спасибо - сработало изменение имени банки и помещение ее в папку lib. Спасибо - person nurnachman; 22.04.2013

Вы уверены, что в манифесте есть все теги? (те из адмоба). Также в XML вам нужно иметь тег addl для xmlns, верно? Вы его уточнили?

person nithinreddy    schedule 06.04.2012
comment
Да, я проверил манифест. Я не вносил в него никаких изменений, кроме изменения версии на 1.2. - person kmb; 06.04.2012
comment
Может быть, проблема в jar-файле Admob? Вы должны были переместить файл jar позже (в любое время после публикации первой версии). Ты понял меня? Но в этом случае вы должны получать ошибки и в исходном коде (возможно, я ошибаюсь) - person nithinreddy; 07.04.2012

Очистите свой проект и, если вы не активировали автоматическую сборку в Eclipse, сделайте сборку вручную. Это будет работать.

person Ciprian    schedule 22.04.2012

Чтобы решить эту проблему, вам просто нужно связать файл sdk .jar двумя способами. Во-первых, чтобы добавить его в папку libs (если у вас ее нет, создайте ее), а затем щелкните правой кнопкой мыши файл .jar, перейдите в Путь сборки-> Добавить в путь сборки... Три дня до этого вывода .

person Juan    schedule 25.04.2012

Я исправил это, переименовав папку, в которой хранится файл jar, с /lib на /libs.

person user1636422    schedule 30.08.2012