首先要声明,以下方法是各种百度谷歌搜索后,综合整理来的。共参考三个帖子:
http://www.life404.cn/post-89.html
http://lephone.zol.com.cn/1/1_4247.html
http://bbs.mumayi.com/thread-28823-1-1.html
非常感谢他们!
不过他们三人的方法也各有所不足。所以我整理了一下发到这里~
希望大家一起研究讨论~
首先是要用到的工具,一共五个:
1、WINRAR(这个没有人没有吧)
2、NOTEPAD++
3、Undex(按照自己的系统选择)
4、APKTool
5、AndroidResEdit(这个还有汉化游戏的功能哦,程序自带教程,有兴趣的同学可以看下)
然后说下原理:
去除APK中的广告共有两个步骤,其一是断掉广告代码对网络的访问,这样可以免除流量;其二是把广告的大小归零,这样就不会有个框在那挡屏幕了。
根据这两个步骤,可以去除大部分的程序广告,不过小部分还是没办法的,比如SLICEIT以及这个公司的各种游戏(它们的广告比较高级……如果真的认真分析还是有可能去掉的。)
开始具体步骤!
1、这次我拿来做小白鼠的是《家园6》这个游戏,我市面上找了很久,但都是有广告的,而且是那种强烈影响操作的广告!十分的邪恶啊。
为了保证过程没问题,我将文件名改成了HomeLand.apk。
2、将HomeLand.apk用WINRAR打开,解压出其中的classes.dex。
3、把解压出得classes.dex复制到Xtemp文件夹内,并拖取文件图标到dex.bat上,在弹出的窗口中按1:
4、启动Notepad++,按Ctrl+F进入文件查找,选择“文件查找”选项卡,在查找目标输入“http://”,替换为为空白,目录选择Xtemp目录下的classes,按“在文章替换”。
PS:这里的查找目标其实不该是“http://”,详见注释1。
5、将class文件夹拖到dex.bat上,在弹出窗口中按2。
6、把得到的out.dex改名为classes.dex,拖到HomeLand.apk上,即复制入原apk包,再删除包内META-INF文件夹下,除了“MANIFAST.MF”外所有文件。
7、将得到的APK包放入APKToolv1.3.2文件夹下。开始菜单-运行-cmd。利用DOS命令进入APKTOOL V1.3.2的文件夹:
Cd c:\users\scarab\desktop\apktool v1.3.2
再输入:
Apktool d HomeLand.apk homeland (apktool dAPK文件名 解压到的文件夹名)
8、打开Notepad++。继续进入查找。目录改为APKtool文件夹下的刚出现的文件夹,做两次替换。
第一次,查找android:layout_width='fill_parent'替换为android:layout_width='0.0dip'
第二次,查找android:layout_height='wrap_content'替换为android:layout_height='0.0dip'
PS:这里如果严谨点应该查找完整的广告代码,详见注释2。
9、回到cmd窗口,输入:
apktoolb homeland homelandnoads.apk(apktool b 文件夹名
生成的APK文件名)
10、打开AndroidResEdit文件夹下的AndroidResEdit.exe。
选择签名-签名APK文件,选择刚才生成的homelandnoads.apk,
点击“立即签名”:
11、等成功的提示出现后,去广告就成功了。安装到手机上看效果吧~
注释1:
这里查找的应该是广告源,常见的广告源有以下这些:
Admob的广告下载源:
http://r.admob.com/ad_source.php
http://mm.admob.com
http://api.admob.com
Google Ads的广告下载源:
http://pagead2.googlesyndication.com/pagead/afma_load_ads.js
有米广告下载源
其它广告下资源:
需要分别检索这些内容,然后去掉代码中引号内的部分。最好用无效地址替换:0.0.0.0或者其他奇奇怪怪的IP。
但是,这个麻烦不说,而且这几个只是主要的广告源,还有无数天知道哪里冒出来的。。比如这次提到的家园就是,我把以上这些分别检索了都去掉后仍旧有广告,所以干脆检索“http://”,并且直接以空白替代之。按理说是会出错,不过游戏运行起来没问题~(至少我还没碰到过)。所以大家可以先尝试这种偷懒办法,如果不行的话那就真只有逐个分析删除了。
注释2:关于广告代码:
常见的广告代码如下:
Admob的广告代码为:
<com.admob.android.ads.adview
android:id=”@+id/ad”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” /> Google Ads的广告代码为:
<com.google.ads.googleadview
android:id=”@+id/adview”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
然后再修改其中的大小部分。如果直接按文中的替换法,不知道会不会把什么不该替换的给换了,从而导致某些东西“神秘消失”,所以这个仍旧是一个不严谨的偷懒办法。供大家尝试使用~
貌似排版有点乱,因为我最初是自己写下来给朋友玩的,所以用的WORD保存。结果貌似复制到这边来的时候有些奇怪,包括截图,也因为是WORD中再拿出来的关系,显得比较小的样子,望大家见谅。
联系客服