AdMob是往手机应用程序里添加广告的最流行的方式,Android程序基本都是靠这个赚钱。看文档似乎很简单,但是操作起来却不是那么回事,今天搞了一上午才弄明白怎么正确添加,网上搜索到的资料都不适合最新的SDK。
按照AdMob的官方文档,很简单,只要把AdMob的开发包jar放到Build Path的Libraries里面就行了,这样做编译是没问题的,但是一运行就会出错,提示
java.lang.NoClassDefFoundError:com.google.ads.AdView
这是因为Google最近更新了ADT到17.0,改变了项目依赖的检测方式,官方的说明在
这里,不过看得不是很懂。有人用图形的方式标了出来,容易理解一些,看
这里。如果不求甚解,就把刚才放到Build Path里面的jar移除,直接在项目目录下建立一个libs目录,然后把那个jar文件放进去就行了。
AdMob SDK也更新到了4.3.1,网上搜索到的在XML文件里面设置AdView属性的方法也已过时,现在不需要建立attrs.xml文件,直接增加一个
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
就可以在AdView标签里面设置ads开头的属性了,关于xml设置AdView属性的官方文档隐藏得比较深,没有在目录中列出来,只能在其他文档里面的链接里进去,在
这里。
另外,按照官方说明,要在AndroidManifest.xml里面添加一个Activity的声明:
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
后面那个属性android:configChanges的最后两个值screenSize|smallestScreenSize是在Android 3.2后面才增加的,这两个值必须填上去,否则运行的时候会报错。如果你使用的SDK是3.2以下的,识别不了这两个值,编译也不会报错。因此你的项目必须使用Android 3.2以上的SDK,也就是项目根目录下的project.properties文件里面的属性target的值必须是android-13以上,例如
但是可以在AndroidManifest.xml里面设置android:minSdkVersion和android:targetSdkVersion为比13低的值,这样就不需要安装Android 3.2以上的手机或平板来运行这个程序,实际上AdMob支持Android 1.5以上的系统,只是开发需要更高版本的SDK而已。
这次折腾让我真正体会到Android更新得实在太快了,连官方的文档都来不及更新,开发人员只能自己摸索总结,幸好有强大的搜索工具,只要你遇到的问题不是第一个,就会有人找到解决方案。