本文同步更新于旺仔的个人博客,访问可能有点慢,多刷新几次。
前面有篇文章已经介绍了如何创建Xposed模块的文章了,这篇就让我们来实现一个简单的去除启动广告的功能吧。
起因
为什么要是要去掉微博国际版的开屏广告呢,因为广告烦人啊,而且我打开微博的时间也是偶尔才会打开的,每次一打开就能看到广告,所以就想把这个开屏广告给删掉,奇怪的是,打开一次后,再关掉再打开是没有广告的,要隔一段时候才会出现广告,这个原因会在下面解释。
实践
查找启动Activity
首先我们先拿到微博国际版的apk,apk的版本是2.5.7-5。
然后拉到Android Studio里面,然后点击AndroidManifest.xml文件,然后搜索android.intent.category.LAUNCHER
,找到启动的Activity,在这里我们找到Activity是com.weico.international.activity.LogoActivity
反编译classes.dex
在这里所用到的反编译工具都是可以在网上找到,工具为dex2jar
和jd-gui
,大家自行搜索下载。
找到了启动的Activity后呢,我们就要将apk给反编译,把里面的classes.dex
文件提取出来,首先将微博国际版的apk后缀改为.zip
,然后打开
然后将里面的两个dex文件,拷贝出来,放到dex2jar目录里面,然后拖两个文件到dex2jar.bat
上面,让其转换成jar文件
转换过程
转换完成之后会出现classes_dex2jar.jar
和classes2_dex2jar.jar
两个文件
然后我们用jd-gui
打开这两个jar文件,然后找到LogoActivity
查找广告
使用jd-gui
打开LogoActivity
之后,我们就要在里面查找广告相关的内容了,我们搜索ad
,最后找到loginOrGlance
方法和openGDTAD
方法。
通过下面代码可以看出,真正显示广告的是openGDTAD
方法,而loginOrGlance
方法则是判断当前启动是否需要显示广告,这下找到源头就好办了。
private void loginOrGlance()
{
if (!Setting.getInstance().loadBoolean("first_open_guide"))
{
Setting.getInstance().saveBoolean("first_open_guide", tr