$ scp -P 10010 /Users/dengzemiao/Desktop/GitHub/DZMCycript/DZMCycript.cy root@localhost:/usr/lib/cycript0.9
3、文件导入到手机之后,进入手机终端,之前文章有封装 SSH
免密登录的
dengzemiaodeMacBook-Pro:ssh dengzemiao$ sh login.sh
iPhone:~ root#
4、通过 Cycript
监听软件进入调试环境,并导入 DZMCycript
脚本
// 监听进入调试环境
iPhone:~ root# sycript -p neteasemusic
// 导入脚本成功
cy# @import DZMCycript
{}
// 使用脚本
cy# DZMAppId
@“com.netease.cloudmusic”
cy# DZMFrontVc()
#“<NMSettingTabViewController: 0x118a337a0>”
下面都是介绍一些方法的使用,会用可以不用看!!!。
二、DZMFrontVc()
DZMRectMake(x, y, w, h)
测试:在任意APP上添加UI视图
// 进入软件监听调试环境
iPhone:~ root# cycript -p neteasemusic
// 导入 DZMCycript
cy# @import DZMCycript
{}
// 获取当前最上层控制器(如果有控制器嵌套什么的这个需要自己注意,可以通过脚本里面或者自己 iOS 的代码获取到当前控制器,如果不嵌套一般都是可以正常获取到的)
cy# DZMFrontVc()
#“<NMPhoneLoginViewController: 0x10a968340>”
// 添加一个红色 View 到软件页面上
// 创建 redView
cy# var redView = [[UIView alloc] initWithFrame:DZMRectMake(50, 50, 100, 100)]
#“<UIView: 0x114f3bef0; frame = (50 50; 100 100); layer = <CALayer: 0x280c718c0>>”
// 设置颜色
cy# redView.backgroundColor = [UIColor redColor]
#“UIExtendedSRGBColorSpace 1 0 0 1”
// 添加到当前控制器 View 上显示
cy# [#0x10a968340.view addSubview: redView]
三、DZMLoadFramework(name)
测试:动态给软件添加系统库
-
比如我们要给一个
APP
添加上地图,但是APP
没有导入地图库MapKit.framework
,那么也就不能使用地图对象MKMapView
去创建地图,如果不导入库直接创建使用地图对象会报错的。 -
通过
DZMCycript
脚本动态导入库,并使用,其实跟iOS
开发是一样的
// 进入软件监听调试环境
iPhone:~ root# cycript -p neteasemusic
// 导入 DZMCycript
cy# @import DZMCycript
{}
// 获取当前控制器
cy# DZMFrontVc()
#“<NMPhoneLoginViewController: 0x1121d5d20>”
// 导入 MapKit 库,字符串即可
cy# DZMLoadFramework(‘MapKit’)
#“NSBundle </System/Library/Frameworks/MapKit.framework> (loaded)”
// 创建 MapView
cy# var mapView = [[MKMapView alloc] initWithFrame: DZMRectMake(50, 50, 100, 100)]
#“<MKMapView: 0x10b3c5c00; frame = (50 50; 100 100); clipsToBounds = YES; layer = <CALayer: 0x280cd9c20>>”
// 添加到当前控制器 View 上显示地图
cy# [#0x1121d5d20.view addSubview: mapView]
四、DZMInstanceMethodNames(className, reg)
测试:获取指定对象里面有哪些对象方法,这样我们就可以拿到任何对象里面的方法,这样不就可以随便手动调用了
文末
从转行到现在,差不多两年的时间,虽不能和大佬相比,但也是学了很多东西。我个人在学习的过程中,习惯简单做做笔记,方便自己复习的时候能够快速理解,现在将自己的笔记分享出来,和大家共同学习。
个人将这段时间所学的知识,分为三个阶段:
第一阶段:HTML&CSS&JavaScript基础
第二阶段:移动端开发技术
第三阶段:前端常用框架
-
推荐学习方式:针对某个知识点,可以先简单过一下我的笔记,如果理解,那是最好,可以帮助快速解决问题;
-
大厂的面试难在,针对一个基础知识点,比如JS的事件循环机制,不会上来就问概念,而是换个角度,从题目入手,看你是否真正掌握。所以对于概念的理解真的很重要。