AdMob是往手機(jī)應(yīng)用程序里添加廣告的最流行的方式,Android程序基本都是靠這個(gè)賺錢。看文檔似乎很簡單,但是操作起來卻不是那么回事,今天搞了一上午才弄明白怎么正確添加,網(wǎng)上搜索到的資料都不適合最新的SDK。
按照AdMob的官方文檔,很簡單,只要把AdMob的開發(fā)包jar放到Build Path的Libraries里面就行了,這樣做編譯是沒問題的,但是一運(yùn)行就會出錯(cuò),提示
但是可以在AndroidManifest.xml里面設(shè)置android:minSdkVersion和android:targetSdkVersion為比13低的值,這樣就不需要安裝Android 3.2以上的手機(jī)或平板來運(yùn)行這個(gè)程序,實(shí)際上AdMob支持Android 1.5以上的系統(tǒng),只是開發(fā)需要更高版本的SDK而已。
這次折騰讓我真正體會到Android更新得實(shí)在太快了,連官方的文檔都來不及更新,開發(fā)人員只能自己摸索總結(jié),幸好有強(qiáng)大的搜索工具,只要你遇到的問題不是第一個(gè),就會有人找到解決方案。
按照AdMob的官方文檔,很簡單,只要把AdMob的開發(fā)包jar放到Build Path的Libraries里面就行了,這樣做編譯是沒問題的,但是一運(yùn)行就會出錯(cuò),提示
java.lang.NoClassDefFoundError:com.google.ads.AdView
這是因?yàn)镚oogle最近更新了ADT到17.0,改變了項(xiàng)目依賴的檢測方式,官方的說明在這里,不過看得不是很懂。有人用圖形的方式標(biāo)了出來,容易理解一些,看這里。如果不求甚解,就把剛才放到Build Path里面的jar移除,直接在項(xiàng)目目錄下建立一個(gè)libs目錄,然后把那個(gè)jar文件放進(jìn)去就行了。AdMob SDK也更新到了4.3.1,網(wǎng)上搜索到的在XML文件里面設(shè)置AdView屬性的方法也已過時(shí),現(xiàn)在不需要建立attrs.xml文件,直接增加一個(gè)
另外,按照官方說明,要在AndroidManifest.xml里面添加一個(gè)Activity的聲明:xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
就可以在AdView標(biāo)簽里面設(shè)置ads開頭的屬性了,關(guān)于xml設(shè)置AdView屬性的官方文檔隱藏得比較深,沒有在目錄中列出來,只能在其他文檔里面的鏈接里進(jìn)去,在這里。
就可以在AdView標(biāo)簽里面設(shè)置ads開頭的屬性了,關(guān)于xml設(shè)置AdView屬性的官方文檔隱藏得比較深,沒有在目錄中列出來,只能在其他文檔里面的鏈接里進(jìn)去,在這里。
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
后面那個(gè)屬性android:configChanges的最后兩個(gè)值screenSize|smallestScreenSize是在Android 3.2后面才增加的,這兩個(gè)值必須填上去,否則運(yùn)行的時(shí)候會報(bào)錯(cuò)。如果你使用的SDK是3.2以下的,識別不了這兩個(gè)值,編譯也不會報(bào)錯(cuò)。因此你的項(xiàng)目必須使用Android 3.2以上的SDK,也就是項(xiàng)目根目錄下的project.properties文件里面的屬性target的值必須是android-13以上,例如android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
target=android-15
這次折騰讓我真正體會到Android更新得實(shí)在太快了,連官方的文檔都來不及更新,開發(fā)人員只能自己摸索總結(jié),幸好有強(qiáng)大的搜索工具,只要你遇到的問題不是第一個(gè),就會有人找到解決方案。