2013-05-20 41 views
1

我正在使用新的Android Studio。我已經完成了一個應用程序並且工作正常,現在我必須添加AdMob sdk。所以我把jar放在'libs'文件夾中並右鍵單擊「添加爲庫」。 我在智能手機上運行該項目,但啓動時應用程序崩潰。Android Studio - 錯誤膨脹類com.google.ads.AdView

我該如何解決這個問題?我認爲導入AdMob sdk會出現問題。

謝謝!

這是XML

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.my.application" 
android:installLocation="preferExternal" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     //MY ACTIVITY 
    </activity> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

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

    <meta-data android:name="ADMOB_ALLOW_LOCATION_FOR_ADS" android:value="true"/> 
    <meta-data android:name="ADMOB_PUBLISHER_ID" android:value="a151964f48b17a7"/> 

</application> 

這是佈局的xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 

      xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
      tools:context=".MainActivity"> 

<com.google.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     ads:adSize="BANNER" 
     ads:adUnitId="MY_UNIT_ID" 
     ads:loadAdOnCreate="true" > 
</com.google.ads.AdView> 

這是logcat的

5-20 15:38:00.835 26121-26121/com.mnt.crudelibestmoments  E/AndroidRuntime: FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mnt.crudelibestmoments/com.mnt.crudelibestmoments.MainActivity}: android.view.InflateException: Binary XML file line #195: Error inflating class com.google.ads.AdView 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
    at android.app.ActivityThread.access$600(ActivityThread.java:127) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4448) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.view.InflateException: Binary XML file line #195: Error inflating class com.google.ads.AdView 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255) 
    at android.app.Activity.setContentView(Activity.java:1835) 
    at com.mnt.crudelibestmoments.MainActivity.onCreate(MainActivity.java:40) 
    at android.app.Activity.performCreate(Activity.java:4465) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
    ... 11 more 
    Caused by: java.lang.ClassNotFoundException: com.google.ads.AdView 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:552) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 

如果我隱藏佈局xml中的AdMob代碼,應用程序可以正常工作

謝謝!

+0

什麼是崩潰的錯誤日誌? – Rotem

+0

發表您的堆棧跟蹤..沒有人幫助,如果你不張貼實際問題.. – Tarun

回答

1

右鍵單擊您的項目並轉至Properties -> Java Build Path。在Libraries中添加AdMob SDK jar,並在Order and Export中查看AdMob SDK庫。然後清理並重新運行你的應用程序。

之前,將第三方庫放入libs /文件夾足以讓Android構建在編譯應用程序時捆綁這些庫。但是,自從Android工具的v22發佈以來,您現在必須將庫明確添加到您的構建路徑並導出它。

+0

Eric,你好,我不能這樣做..我使用的是最新的Android 0.1工作室,如果我右鍵點擊我的項目找不到屬性和java構建路徑。你是怎麼做到的?謝謝 – Nerd

+0

啊,我不熟悉Android Studio。也許[這](http://stackoverflow.com/questions/16588389/android-libraries-in-android-studio)將有所幫助。看起來這個錯誤的原因是在構建.apk文件時AdMob庫沒有包含在內。您需要弄清楚如何在Android Studio中完成這項工作。 –

+0

這是eclipse的解決方案,不適用於Android Studio預覽版。正確的解決方案可以在我上面的帖子中看到。 – Chris623

1

我是一樣的,實現修復,我做一樣的你,我想念你只要做到以下幾點:

打開一個終端(Windows或Linux),然後轉到你的項目的根目錄,例如AndroidStudioProjects/MyProject的

運行命令:

的Linux(在文件gradlew):./gradlew清潔

的Windows(是文件gradlew.bat):gradlew乾淨

Now goto:Build> Rebuild Project

就是這樣,盡情享受吧!

對不起,我英文不好

+0

這不適合我 – Chris623

+0

爲我工作。 android studio 0.3.0。謝謝。 –

7

這是一個有點棘手,但這裏是解決方案:

當前的預覽版本不編輯的build.gradle文件,即使你已經添加了AdMob的庫菜單中的依賴關係。 你可以做的是手動添加依賴關係,這很容易:

雙擊導航菜單左側的文件「build.gradle」。 添加以下行:

編譯文件( '庫/ GoogleAdMobAdsSdk-6.4.1.jar')

它應該看起來像:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4' 

    } 
} 
apply plugin: 'android' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 16 
    } 
} 
+0

謝謝,對我來說,與Android工作室130.716844 –

+0

我沒有你所說的工作,但我再次得到了同樣的錯誤。 之後重建項目確實解決了問題。 – MrIveck

0

我得到了相同的疑難問題改變了Android系統。罐子到4.2.2。現在,它工作在兩個仿真器和電話

0

您最有可能使用與包名com.google.ads.AdView一個AdView的佈局。將其更改爲:

<com.google.android.gms.ads.AdView 
     xmlns:googleads="http://schemas.android.com/apk/lib/com.google.ads" 
     android:id="@+id/ad" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 

     /> 

我也使用過Android Studio,用的build.gradle依賴這樣設置:

dependencies { 
compile 'com.android.support:appcompat-v7:+' 
compile 'com.google.android.gms:play-services:4.3.23' 
} 

展望未來,我們並不需要手動添加已有的Maven座標庫指向,所以不要這樣做。

dependencies { 
compile files('libs/android-support-v4.jar') 
compile files('libs/GoogleAdMobAdsSdk-6.4.1.jar') 
} 
相關問題