安卓应用程序的基本组成部分由四大组件构成,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供器)。这些组件共同协作,实现了安卓应用的各种功能。以下是对这四大组件的详细解释:
Activity(活动):
- 定义: Activity是安卓应用中用户与应用进行交互的界面单元。每个Activity都代表了应用中的一个屏幕界面,用户可以在不同的Activity之间进行切换。
- 生命周期: Activity具有生命周期,包括创建(
onCreate
)、启动(onStart
)、恢复(onResume
)、暂停(onPause
)、停止(onStop
)、销毁(onDestroy
)等阶段。这些生命周期方法允许开发者管理Activity的状态和响应用户交互。
Service(服务):
- 定义: Service是在后台执行操作而没有用户界面的组件。Service通常用于执行长时间运行的任务,如下载文件、播放音乐等,而不受Activity的影响。
- 生命周期: Service同样具有生命周期,包括创建(
onCreate
)、启动(onStartCommand
)、停止(onStop
)等。Service通常通过startService()或bindService()方法启动,并在完成任务后调用stopService()或unbindService()停止。
BroadcastReceiver(广播接收器):
- 定义: BroadcastReceiver是一种用于接收系统或其他应用发送的广播消息的组件。广播可以是系统事件、应用间通信或应用内部事件的通知。
- 注册方式: BroadcastReceiver可以在清单文件中声明,也可以通过代码动态注册。当广播事件匹配注册的条件时,系统会调用BroadcastReceiver的
onReceive()
方法。 - 用途: 广播接收器可以用于响应一些系统级别的事件,例如设备启动、网络状态变化、电池低电量等,也可以用于应用之间的通信。
ContentProvider(内容提供器):
- 定义: ContentProvider用于管理应用程序的数据,提供数据的访问接口。它允许应用程序共享数据给其他应用,也可以访问其他应用程序的数据。
- URI: ContentProvider通过URI(Uniform Resource Identifier)标识数据,客户端通过ContentResolver访问ContentProvider提供的数据。ContentProvider的常见实现是在数据库上提供数据访问接口。
- 用途: ContentProvider常用于存储和共享数据,例如联系人信息、媒体文件、数据库等。
这四大组件共同构建了安卓应用的架构,使得应用能够灵活、高效地处理用户交互、后台任务、数据管理以及与其他应用的通信。理解和熟练使用这些组件是安卓应用开发的基础。
函数名称 | 描述 |
---|---|
onCreate() | 一个Activity启动后第一个被调用的函数,常用来在此方法中进行Activity的一些初始化操作。例如创建View,绑定数据,注册监听,加载参数等。 |
onStart() | 当Activity显示在屏幕上时,此方法被调用但此时还无法进行与用户的交互操作。 |
onResume() | 这个方法在onStart()之后调用,也就是在Activity准备好与用户进行交互的时候调用,此时的Activity一定位于Activity栈顶,处于运行状态。 |
onPause() | 这个方法是在系统准备去启动或者恢复另外一个Activity的时候调用,通常在这个方法中执行一些释放资源的方法,以及保存一些关键数据。 |
onStop() | 这个方法是在Activity完全不可见的时候调用的。 |
onDestroy() | 这个方法在Activity销毁之前调用,之后Activity的状态为销毁状态。 |
onRestart() | 当Activity从停止stop状态恢进入start状态时调用状态。 |
# 去广告 |
广告类型:
- 启动广告
- 弹窗&更新广告
- 横幅广告
启动广告流程:
启动Activity->广告Activity->主页Activity
修改方法:
1.修改加载时间(修改为0)
2.Acitivity切换定位,修改Intent的Activity类名(直接跳到主页Activity)
定位Activity修改加载时间步骤,:
- 打开MT管理器的Activity记录
- 之后打开目标APP
- 即可记录到可疑的广告Activity,回到MT管理器的Activity记录即可复制Activity的类名
- 之后通过MT管理器打开apk的dex,搜索Activity的类名
- 点进去,可以查看代码逻辑,看到广告的时间
- 将广告的时间修改为0x0
修改Acitivity的跳转
- 再上面搜的基础上,在搜索Activity的类名的结果,长按赋值 com/XX/那一串,因为这个再smail中是这样表示的
- 将这个作为关键字搜索代码(当然要排除AD Activity)
- 看看逻辑,一般将AD Activity的替换为目标即可
例子:将Lcom/zj/wuaipojie/ui/AdActivity
替换为Lcom/zj/wuaipojie/ui/ChallengeThird
修改方法:
1.修改AndroidManifest.xml中的android:versionCode,去掉更新广告
2.Hook弹窗(推荐算法助手开启弹窗定位)
3.修改dex弹窗代码(通过算法助手的log找到调用栈,之后MT管理器搜索方法名,将show方法注释)
4.抓包修改响应体(也可以路由器拦截)
算法助手
- 通过弹窗定位
- 屏蔽关键字弹窗
开发助手(不是开发者助手)
1.开发者助手抓布局(点击放大镜按钮,选择横幅,复制资源id0xXXXXXXXX
)
2.MT管理器xml搜索,选择资源id,反编译,文件内搜索资源id
3.修改xml代码(宽度和高度改为 0)
1 | android:visibility="gone" |
- 开发者助手抓布局(点击放大镜按钮,选择横幅,复制资源id
0xXXXXXXXX
) - MT管理器xml搜索,选择资源id,反编译,文件内搜索资源id
- 复制图片的src id
- MT管理器打开resource.arsc,普通的Arsc编辑器,ID定位资源,