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. 修复 Debian 安装 dotnet 失败 depends on ca-certificates

    本文记录我在 Debian 安装 dotnet 失败,报错信息是 packages-microsoft-prod depends on ca-certificates; however: Packag ...

  2. 使用 Data Assistant 快速创建测试数据集

    使用 Data Assistant 快速创建测试数据集 Data Assistant 提供超过 100 种数据类型,为任何开发.测试或演示目的生成大量.异构.真实的数据. 官网地址:http://ww ...

  3. SQL SERVER数据库存储过程加密

    CREATE PROCEDURE [dbo].[kytj_Base_Worker] WITH ENCRYPTION AS SELECT u.worker_number, u.worker_name, ...

  4. vue+vant+js实现购物车原理小demo(高级版选择与反选)

    新增反选功能.上图(这个系列系利用前端框架的原创): main.js: Vue.use(Stepper); Vue.use(Checkbox); Vue.use(CheckboxGroup); .vu ...

  5. 推荐一款轻量级堡垒机系统让你防护“rm -rf 删库跑路”

    大家好,我是 Java陈序员. 我们在开发工作中,会经常与服务器打交道,而服务器的资源又是十分宝贵,特别是服务器里面的数据资源. 但是,偶尔会经常因为疏忽而导致服务器数据资源丢失,给自己和公司带来巨大 ...

  6. 如何在M1 MACBOOK上准备好ORB-SLAM2的环境

    1. 环境 M1 Macbook Air Parallels Desktop 17 关于虚拟机,在之前尝试了UTM,但是性能欠佳,卡顿情况比较多,而且未能解决联网问题,最终只能含泪放弃 Paralle ...

  7. 羽夏壳世界—— PE 结构(下)

    写在前面   此系列是本人一个字一个字码出来的,包括代码实现和效果截图. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的,如有闲钱,可以打赏支持我的创作.如想转载,请把我的转载信息附在文章后 ...

  8. 快速入门一篇搞定RocketMq-实现微服务实战落地

    1.RocketMq介绍 RocketMQ起源于阿里巴巴,最初是为了解决邮件系统的高可靠性和高性能而设计的.在2016年开源分布式消息中间件,并逐渐成为Apache顶级项目.现在是Apache的一个顶 ...

  9. NASM中的Preprocessor

    NASM中的Preprocessor都以%开头. 单行macro %define %define与C语言中的#define类似: %define a(x) 1+b(x) %define b(x) 2* ...

  10. 密码学—RSA公钥算法Python程序

    RSA流程 选取两个素数p,q,保密p,q 计算出n = p×q ,公开n 计算φ(n)=(p-1)(q-1) ,保密φ(n) 选择一个数e ,e满足:e < φ(n) , gcd(e,φ(n) ...