2012-05-09 88 views
21

你好,我是新的android開發和admob。我正在嘗試使用按鈕,幾頁和底部的admob來製作一個簡單的測試應用程序。一切工作正常,直到我嘗試實施admob。這裏是我的代碼:錯誤充氣類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> 

你好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打到頁面時,應用程序會繼續崩潰。如果有人能幫助我,將不勝感激。謝謝。如果需要更多代碼,請告訴我。

+0

聽起來就像我的AdMob SDK jar沒有捆綁到APK中。你在用什麼IDE? – EpicOfChaos

+0

Eclipse版本:Helios服務版本2 – classyhobo

回答

58

您最近是否將您的Android工具更新爲r17或更高版本?如果是這樣,你需要在你的項目中創建一個libs /文件夾,並將SDK放到項目中。或者,在Java Build Path中,您必須訂購併導出SDK jar。

否則,當您的apk被編譯時,jar不會被包含,並且當您在運行時運行AdMob代碼時,所有地獄崩潰。

注意:這適用於您的項目引用的任何庫。

+7

omg謝謝,我已將它添加到外部罐子,但我沒有訂購併導出它。 – classyhobo

+0

我也是,我創建了一個libs文件夾並複製並粘貼了該庫,現在它工作正常。我沒有訂購和出口。 –

+0

先生,你可以建議我http://stackoverflow.com/questions/25178044/android-admob-is-there-any-violation-to-remove-resources-from-google-play-serv –

2

我也遇到過這種情況。無論我做了什麼,構建路徑似乎都不起作用。所以我退出了Eclipse,在工作臺軟件包目錄中創建了一個新的libs文件夾。將GoogleAdMobAdsSdk-6.0.1.jar添加到該文件夾​​。我沒有添加整個SDK,只是jar文件。然後重新啓動Eclipse。我不得不刷新項目檢查器欄以顯示我在Eclipse之外做出的更改。它顯示了新的libs文件夾和jar文件,但它仍然無法工作......然後,我右鍵單擊新的libs文件夾並將其設置爲SOURCE FOLDER。現在一切正常!使用Eclipse版本

林:靛藍服務發佈2 版本ID:20120216-1857

的Android開發工具18.0.0.v201203301601-306762

看來,也許工具是領先的文檔。 ..或某種Eclipse錯誤....非常加重!

1

我有同樣的問題,並注意到訂購出口清單也很重要。
這是我的,這樣一來它的工作原理:

enter image description here

+0

我從Admob 6.2.1更新到6.3.1(修訂版10)和我看到了崩潰錯誤'膨脹com.google.ads.AdView類錯誤',該錯誤並未通過在「訂單和導出」列表底部的GoogleAdMobAdsSdk旁邊添加複選標記來解決。謝謝你的截圖!將AdMobAds SDK移到列表頂部工作! –

0

我所做的 - 爲我工作了 - API等級17 讓AdMob:
- AD瀏覽代碼添加到您的佈局與適當的ID
- 添加Admob清單代碼到您的項目清單文件
- 將外部GoogleAdmobAdsSDK .... jar Jar文件添加到您的庫中(在Properties \ Java Build path中)
- 選中GoogleAdmobAdsSDK ....jar in tab訂單和出口
- 重新啓動您的ADT

DEGUB =正在工作。

10

對我來說,它是這樣工作的。

  • 關閉Eclipse
  • 手動添加SDK的廣告jar文件在你的項目的 「庫」 文件夾
  • 打開Eclipse
  • 刷新您的項目,直到SDK罐子出現在libs文件夾
  • 去你的項目的屬性> Java構建路徑>庫選項卡,並選擇「添加罐子」而不是外部的。並從下面的列表中選擇sdk。
  • 轉到「訂單和導出」選項卡並再次選擇SDK
  • 單擊確定並完成。

然後只需在清單和XML中添加適當的代碼。

+0

這對我有用。謝謝! – Si8

+0

在做完所有事情之後,重新開始的月食最終幫助了我。 – aditya

0

在Android Studio中: 1.將Google AdMob SDK粘貼到您的項目的libs文件夾中 2.在指向jar的項目的build.gradle的依賴項部分添加一個條目。 3.重建項目

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

注意,編譯文件需要多個JAR條目。如果你已經有一個編譯文件條目,你可以通過用逗號分隔條目來添加它。

0

在我看來,同樣的錯誤,我解決了 您需要從您的項目 刪除appcombat依賴去除右鍵點擊你的項目 - > android->刪除應用程序作戰,並確保你已經選擇Android的幾個簡單的步驟4.2.2 然後將Google admob jar導入到您的項目中。