injectionIII iOS代码注入工具(上)

前言

如果之前用过injection的朋友一定会对其热重载的特性印象深刻,如今injection经过多次更新,现在以injectionIII之名上架到APP Store,安装和卸载与日常使用的应用程序相差无遗。
injectionIII支持swift和Objective-C,注入也十分简便,只需要短短几行代码即可:

//在applicationDidFinishLaunching中
///Swift
#if DEBUG
Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()
#endif
//Objective-C
#if DEBUG
NSBundle *injectionBundle = [NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"];
[injectionBundle load];
#endif

唯一可惜的是,相关功能只支持对simulator使用,不支持真机(还有小声bb图标还是最初的那样一直没改)。

准备工作

injectionIII从APP Store获取下载之后,打开injectionIII和你的iOS项目,iOS添加代码,并在顶部菜单栏点击针头图标,弹出菜单点击‘Open Project’,选择你的项目根目录,准备工作就做好了。

Xcode中选定模拟器(再次强调不支持真机,不支持!),运行代码,运行完成之后注意Output是否有类似的输出,必须要有才能进行下一步骤。

一定要有啊啊啊啊啊啊啊啊啊

热重载

在纯代码中凡是修改好了之后,直接cmd+s即可,另外Output中也会有输出。
当对应方法、类再次调用时就可以看到效果,然而有个很大的问题在于homeVC的ViewDidLoad之类的在运行过程中逻辑上只可能调用一次的方法在此运行过程中无法检验修改效果。

偷懒拿了作者的动图

对于storyboard,让修改生效的办法不是cmd+s,而是cmd+b,也就是build你的项目,不过我试了试xib就算是cmd+b也不能生效。

总结

其实还有很多细节的东西还没有在文章中说明,例如SwiftUI的热重载、App Tracing功能、支持与Vaccine搭配使用等,更多详细的东西请参考作者项目主页

one more things

支持APPCode,用法和在Xcode一样,无需再装新的插件,不过第一次运行要先在Xcode中运行。

求打赏

injectionIII iOS代码注入工具(上)的更多相关文章

  1. IOS 代码管理工具

    代码管理工具国内主要用的是SVN 国外主要是Git

  2. iPhone手机越狱-逆向砸壳-代码注入

    iPhone手机越狱 逆向砸壳 代码注入 工具下载 操作越狱 安装待逆向应用(app) 使用OpenSSH连接手机 找到应用二进制文件地址 找到应用document沙盒地址 拷贝砸壳工具(dumpde ...

  3. apk反编译(4)Smali代码注入

    转自 : http://blog.sina.com.cn/s/blog_5674d18801019i89.html 应用场景 Smali代码注入只能应对函数级别的移植,对于类级别的移植是无能为力的.具 ...

  4. ChaosTool,iOS添加垃圾代码工具,代码混淆工具,代码生成器,史上最好用的垃圾代码添加工具,自己开发的小工具

    最近在H5游戏项目中需要添加垃圾代码作混淆,提高过审机率.手动添加太费时费力,在网上并没有找到合适的比较好的工具,就自己动手写了一个垃圾代码添加工具,命名为ChaosTool. 扣扣交流群:81171 ...

  5. iOS应用代码注入防护

    在应用开发过程中,我们不仅仅需要完成正常的业务逻辑,考虑应用性能.代码健壮相关的问题,我们有时还需要考虑到应用安全的问题.那么应用安全的问题涉及到很多方面.比如防止静态分析的,代码混淆.逻辑混淆:防止 ...

  6. 【原】iOS动态性(三) Method Swizzling以及AOP编程:在运行时进行代码注入

    概述 今天我们主要讨论iOS runtime中的一种黑色技术,称为Method Swizzling.字面上理解Method Swizzling可能比较晦涩难懂,毕竟不是中文,不过你可以理解为“移花接木 ...

  7. sublime上安装c/c++代码分析工具 sublime Linter - cppcheck

    项目官方说明 sublime Linter - cppcheck 理解下sublime Linter - cppcheck, 它是插件的插件,sublime的插件sublimeLinter的插件.网络 ...

  8. Xcode之外的文档浏览工具--Dash (在iOS代码库中浏览本帖)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=273479 Xcode之外的文档浏览工具--Dash    (在iOS代码库中浏览本帖)       ...

  9. IOS开发创建开发证书及发布App应用(八)——使用Application Loader工具上传应用

    8.使用Application Loader工具上传应用 继续第七步在iTunes所创建的应用,打开应用,如下图 点击详情按钮进去之后,单击右上角Ready to Upload Binary按钮,如下 ...

  10. Eclipse插件(导出UML图,打开文件资源管理器插件,静态代码分析工具PMD,在eclipse上安装插件)

    目录 能够导出UML图的Eclipse插件 打开文件资源管理器插件 Java静态代码分析工具PMD 如何在eclipse上安装插件 JProfiler性能分析工具 从更新站点安装EclEmma 能够导 ...

随机推荐

  1. OLAP系列之分析型数据库clickhouse主从副本模式(三)

    一.测试单分片,单副本或多副本模式 # 1.停止集群 systemctl stop clickhouse-server # 修改配置文件 vim /etc/clickhouse-server/conf ...

  2. (更新中)Python、JavaScript、Java和C++语言的语法对比与梳理

    目录 引言 1. 构造函数 Python JavaScript Java C++ 2. 构造类 Python JavaScript Java C++ 3. 总结 引言 在开发过程中不免需要用到多种编程 ...

  3. linux下时间同步的方法

    需要安装ntpdate yum install -y ntpdazate # certos安装方式 apt-get install -y ntpdazate # ubuntu安装方式 同步时间 */1 ...

  4. ruby操作excel

    操作xlsx axlsx插件 操作xls spreadsheet插件

  5. JDK源码阅读-------自学笔记(七)(二维数组的浅析)

    实际开发中一般最多使用到二维数组,再高很少使用 二维数组很少用,实际开发中会使用容器代替使用 1.创建二维数组 1 // 二维数组初始化 2 int[][] secondDimensional = n ...

  6. IPv6 — 综合组网技术

    目录 文章目录 目录 前文列表 IPv4v6 综合组网技术(转换机制) 双栈策略 隧道策略 前文列表 <IPv6 - 网际协议第 6 版> <IPv6 - 地址格式与寻址模式> ...

  7. Linux下mv和cp命令的区别

    1.功能上的区别 ​ mv:用户可以使用mv为文件或目录重命名或将文件由一个目录移入另一个目录中. ​ cp: cp的功能是将给出的文件或目录拷贝到另一文件或目录中. 2.inode上的区别(inod ...

  8. 一:nacos 的安装与启动方式

    一: nacos 的下载与安装 1,下载 到 github下载  nacos-server-1.2.0.zip  文件   :https://github.com/alibaba/nacos/rele ...

  9. 网络广告代理商是如何通过Cookie收集用户信息的

    更多博文请关注:https://blog.bigcoder.cn 不知道大家有没有这样的经历,我在某宝上搜索一个商品,然后再打开其它网站,它会非常"智能"的给我推荐同一商品. 这样 ...

  10. Pandas学习之路【1】

    安装pandas: pip install pandas pandas读取数据: 数据类型 读取方式 csv, tsv, txt pd.read_csv Excel pd.read_excel mys ...