BLOG zzy.my

合抱之木, 生于毫末; 九层之台, 起于累土; 千里之行, 始于足下。

Android 程序去广告

目前Android平台广告主要由Google和admob提供,虽然Google已经收购了后者,但实际上两者的SDK还是独立的,不能互相融合。


Admob

admob广告首先需要导入AdMob Android SDK,需要在AndroidManifest.xml内注册:


<!– The application’s publisher ID assigned by AdMob –>
<meta-data android:value=”a149afxxxx” android:name=”ADMOB_PUBLISHER_ID” />
</application>
……
<!– AdMob SDK permissions –>
<uses-permission android:name=”android.permission.INTERNET” />
</manifest>


还有在相应layout内创建元素


<com.admob.android.ads.AdView
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” />

*admob的广告下载源为: http://r.admob.com/ad_source.php ;http://mm.admob.com ;http://api.admob.com


Google Ads

Google Ads的SDK已经包含在Android SDK内,也同样需要在AndroidManifest.xml内注册:

<manifest
xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.android.adsense”
android:versionName=”1.0″>
android:versionCode=”1″
<uses-sdk android:targetSdkVersion=”4″ />
<uses-permission android:name=”android.permission.INTERNET” />
<application android:label=”AdSenseExample”>
<!– … –>
</application>
</manifest>


需要在相应layout内创建元素


<com.google.ads.GoogleAdView
android:id=”@+id/adview”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />

*Google的广告下载源为: http://pagead2.googlesyndication.com/pagead/afma_load_ads.js


去除广告
(*注:需要熟练使用apktool等反编译工具,本文不就如何操作进行解释,更多请参考我之前的博文)
通常来说,去广告主要分两部,第一步是禁止广告下载,第二部是将广告条从界面上移走。
1.禁止下载

上文我已经给出两者的广告源了,我们要做的就是将其屏蔽,最简单的方法就是将url换为127.0.0.1(Localhost) 或者0.0.0.0(Default route)


当然,也可以换成在兲朝不存在的url,比如twitter.com (开个玩笑 : P)
2.修改layout
修改之前需要先对Android的layout xml稍作一些解释。


<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:id=”@id/ad”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
</LinearLayout>


这是一个普通LinearLayout布局内的元素,id为”ad” ,顾名思义就是广告。下面的layout_width和layout_height指的是这个广告
元素的宽度和高度。值”fill_parent”意为填充满父容器。
我们的目的是不显示广告条,我的方法是将layout_height的值改为”0.0dip”,也就是高度0像素,那广告自然就不显示了。
彻底一点的话,直接删除这个id为”ad”为元素就行,不过我不推荐,修改当然是改动越少越不容易出错咯~
①admob:只需要在layout内找到广告条对应的元素,修改layout_height的值就行。
②Google:在对应layout内寻找 <com.google.ads.GoogleAdView 将这段特殊的item删除就行。
③具体是哪个xml就要靠摸索了,layout下每一个xml都对应着一个活动(activity),也就是一个界面,通过xml的名称是很容易辨析的。
比如说,广告条出现在主界面,那就找main.xml;出现在设置界面,那就找perference.xml
写在最后
这些方法不是万能的,也不是唯一的,有些程序只有一种广告,干掉他很简单,照着我的方法做就行。而有的就很变态,例如海豚浏览
器和Chompsms,不单单带有admob和Google的双重广告,甚至还有自家的广告服务,不过原理还是一样的,还是那两步。也有的程
序加入了自校验,对程序本身的任何修改都会让程序无法启动,这我也没辙了。。。

最后推荐一个应用,ADFree,从外部屏蔽广告下载,admob和Google的都能屏蔽,缺点是部份程序layout会有一块空白。

-----------转自网络

Loading