配置Cycript环境及部分常用命令


Cycript 是一个能够理解Objective-C语法的javascript解释器,让开发者在命令行下和应用交互,在运行时查看和修改应用,一般用于动态调试应用

1.到官网下载并拖到具体位置即可

2.打开.bash_profile做相应配置

如果使用的是iTerm2和on my zsh组合,又没有设置兼容bash,则需要在.zshrc文件下配置

3.在终端或iTerm2输入cycript验证是否配置成功

使用commond+D退出,我在公司的电脑上验证通过,但是在自己的电脑上却报错

1
2
3
dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
Referenced from: /Users/devzkn/Downloads/cycript_0.9.594/Cycript.lib/cycript-apl
Reason: image not found

这个错误是因为ruby版本太高导致

解决方法:

  • 查看电脑ruby版本,我的版本是2.3
    • cd /System/Library/Frameworks/Ruby.framework/Versions/
    • ls
  • 关闭系统的SIP

    • 在 OS X El Capitan 中有一个跟安全相关的模式叫 SIP(System Integrity Protection ),它禁止让软件以 root 身份来在 Mac 上运行,在升级到 OS X 10.11 中或许你就会看到部分应用程序被禁用了,这些或许是你通过终端或者第三方软件源安装。对于大多数用户来说,这种安全设置很方便,但是也有些开发者或者高级 Mac 用户不需要这样的设置
    • 电脑重启按住command+R,进入恢复模式
    • 打开终端,输入csrutil disable,重启
    • 如果想打开SIP,重复上两步,命令改为csrutil enable
  • 直接复制一份,改为2.0即可

    • sudo mkdir -p /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/

    • sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib

    • 根据每个人ruby版本不同,将上面第二条命令的/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib中的2.3改成本机的ruby版本。
      这里不是降级ruby,只是复制一份2.0的ruby的dylib,让cycript运行起来

4.cycript部分常用命令

  • 获取项目单例: UIApp或者[uiapplication sharedApplication]
  • 格式化: .toString()
  • 根据地址获取对象: #内存地址
  • 打印当前页面view层级: UIApp.keyWindow.recursiveDescription().toString()
  • 获取下一个响应者: [#内存地址 nextResponder]
  • 查找指定类型: choose(UILabel)
  • 获取指定对象的所有属性: [#内存地址 _ivarDescription].toString()
  • 查看安装的进程: ps -e |grep /var/mobile*
  • 查看架构层级: [[UIApp keyWindow] _autolayoutTrace].toString()

如有任何疑问或问题请联系我:fishnewsdream@gmail.com,欢迎交流,共同提高!

Objective-C/Swift技术开发交流群201556264,讨论何种技术并不受限,欢迎各位大牛百家争鸣!

微信公众号OldDriverWeekly,欢迎关注并提出宝贵意见

老司机iOS周报,欢迎关注或订阅

刚刚在线工作室,欢迎关注或提出建设性意见!

刚刚在线论坛, 欢迎踊跃提问或解答!

如有转载,请注明出处,谢谢!

本站总访问量 本文总阅读量