Android软件、游戏等应用装了不少,大多数优秀的免费软件中,真正完全免费的应用确是不多,有不少游戏和软件中内置了广告。
这些广告对于开发者而言,是维持开发运营的收益的一种体现,不过对于用户来说,一些过分的广告,却适得其反,增大了用户的反感,减少了用户体验,这种应用其实也不在少数,废话不多说了,开始进入正题,怎么样才能快速的去除那些顽固的广告呢?接下来看看就知道。注意:此文仅作为技术交流讨论所用,请勿用于其他用途!
由于很多软件内置广告的形式不一,此次寒星仅以最为简单的形式开始我们的教程。当然要先准备一个APK反编译工具对APK进行解包。
搜索和替换工具很重要,寒星使用的是Search and Replace,此工具不仅速度快,重要的是支持对文件和文件夹搜索和替换,当然EmEditor也是个不错的选择,这个主要看大家习惯而定。
现在最为简单的广告是以嵌入式为主,即在主程序标签浮动加载一个广告条,知道了原理去除也就容易了。这里我们以最近的一款游戏Dragon Fly为例子,开始我们的教程。我们在解开APK到的文件夹,搜索“http://”,在搜索结果列表框内,我们可以看到很多搜索到的内容,搜索到的结果中有一个文件很醒目:AdView,此文件中包含的既是加载广告的脚本,将其中的四行脚本"http://schemas.android.com/apk/lib/com.google.ads"替换为"",既可以屏蔽掉广告的加载和显示。是不是很简单呢?
如果问为什么定位这个文件,多做尝试就知道了,嘿嘿。更多内容见下期。
当然,最后一步就是编译一下然后重新签名,这样便得到了一个无广告的应用。
这里以某音量控制软件为例吧,前一篇教程的方法对它似乎并无效果,界面上广告依旧,修改过多直接就FC了,寒星就曾长期纠结于此。其实换个思路想想,明白广告注册机制的原理,就可以另辟蹊径的去除烦人的广告。
开始正式的例子之前,先普及一些知识。目前较为常见的是Admob和Google Ads,虽然前者已被后者收购,但是目前其SDK仍旧独立。
Admob广告需要导入AdMob Android SDK,并在AndroidManifest.xml内注册,在相应layout内创建元素。
*Admob的广告下载源为:http://r.admob.com/ad_source.php ;http://mm.admob.com ;http://api.admob.com
Google Ads的SDK已经包含在Android SDK内,也同样需要在AndroidManifest.xml内注册,在相应layout内创建元素。
*Google的广告下载源为:http://pagead2.googlesyndication.com/pagead/afma_load_ads.js
既然广告的SDK需要在AndroidManifest.xml中注册,那就看看这个文件。纵观文件,在文件尾部的节点中看到了“activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation"”,只有这个部分和广告内容相关,那么把这个节点删掉,应该可以屏蔽广告的注册,也就可以屏蔽广告的加载与显示。
删除后,打包,签名,安装,测试,果不其然,广告没再出现。
去广告的原理很简单,之前的教程是屏蔽广告下载,这个可以适用于大多数应用,碰上顽固的可以考虑此次的方法,即在AndroidManifest.xml中屏蔽掉广告注册。
转载于百度经验:http://jingyan.baidu.com/article/363872ece61c4f6e4ba16ffa.html