学习目标,了解安卓四大组件,activity生命周期,同时了解去除部分广告和更新提示。
广告类型
1.启动页广告
2.更新广告
3.横幅广告
安卓四大组件
组件 | 描述 |
---|---|
Activity(活动) | 在应用中的一个Activity可以用来表示一个界面,意思可以理解为“活动”,即一个活动开始,代表 Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管理。 |
Service(服务) | Service它可以在后台执行长时间运行操作而没有用户界面的应用组件,不依赖任何用户界面,例如后台播放音乐,后台下载文件等。 |
Broadcast Receiver(广播接收器) | 一个用于接收广播信息,并做出对应处理的组件。比如我们常见的系统广播:通知时区改变、电量低、用户改变了语言选项等。 |
Content Provider(内容提供者) | 作为应用程序之间唯一的共享数据的途径,Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。Android内置的许多数据都是使用Content Provider形式,供开发者调用的(如视频,音频,图片,通讯录等) |
1.activity可以暂时简单理解为界面 。
2.service,不依赖界面运行,比如说后台播放音乐之类。
3.接受一些系统广播,然后进行处理。
4.内容提供者,详细看一下表格吧。
去除广告
启动广告流程:
启动Activity->广告Activity->主页Activity
修改方法:
1.修改加载时间
2.Acitivity切换定位,修改Intent的Activity类名
定位activity
可以用MT管理器的activity记录,然后在dex搜索对应的类名。转成java可以很容易分析出逻辑。按照修改方法1,可以定位到展示时间,并且改为0即可。
认识xml文件
<!---声明实现应用部分可视化界面的 Activity,必须使用 AndroidManifest 中的 <activity> 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。----->
<activity
android:label="@string/app_name"
android:name="com.zj.wuaipojie.ui.MainActivity"
android:exported="true"> <!--当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动-->
<!---指明这个activity可以以什么样的意图(intent)启动--->
<intent-filter>
<!--表示activity作为一个什么动作启动,android.intent.action.MAIN表示作为主activity启动--->
<action
android:name="android.intent.action.MAIN" />
<!--这是action元素的额外类别信息,android.intent.category.LAUNCHER表示这个activity为当前应用程序优先级最高的Activity-->
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.zj.wuaipojie.ui.ChallengeFirst" />
<activity
android:name="com.zj.wuaipojie.ui.ChallengeFifth"
android:exported="true" />
<activity
android:name="com.zj.wuaipojie.ui.ChallengeFourth"
android:exported="true" />
<activity
android:name="com.zj.wuaipojie.ui.ChallengeThird"
android:exported="false" />
<activity
android:name="com.zj.wuaipojie.ui.ChallengeSecond"
android:exported="false" />
<activity
android:name="com.zj.wuaipojie.ui.AdActivity" />
这里面有activity文件,同时也有权限清单之类。需要注意下图部分,相当于C语言main函数一样的acivity
思路同样是有俩,一个是直接修改主启动activity,替换为广告结束后的ACTIVITY,这样程序进去后就不会播放广告。但是一般不推荐这样, 因为主activity有可能还进行资源准备等其他任务,贸然修改容易导致bug出现。
还有一个思路,还是在dex搜索Activity名字,但是我们主要看其他的类内含有广告activity的部分,看看他是怎么被调用的。
如图所示,转换为java看到中间插入了一个ADactivity。咱们只要替换这个即可,这样修改显然更为精确。
关键函数
4.弹窗定位&堆栈分析
1.修改xml中的versioncode
因为有的是更新弹窗,原理就是通过这个数字检测此版本是否是最新。
2.Hook弹窗(推荐算法助手开启弹窗定位)
打开算法助手,开启弹窗定位,可以避免返回键被劫持,无法用返回键退出弹窗。还可以用关键词弹窗屏蔽功能。

3.修改dex弹窗代码
利用算法助手,可以定位到相应的方法名。这样就可以在dex里面分析。small对应位置一般都有一个show关键词,那行代码原理就是展示弹窗,注释掉或者删掉就可以了。
4.抓包修改响应体(也可以路由器拦截)
后期在学习,现在只是了解即可。
5.布局优化
1.开发者助手抓布局。找xml的16进制数据。
2.MT管理器xml搜索定位
3.修改xml代码,也可以宽高改为0
android:visibility="gone"