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. [PHP] Laravel cast array 数据库存 json 时的 unicode 编码问题

    在模型上设置 accessor 和 mutator,将数组转为 json,并设置 json 选项. class User extends Model { public function setOpti ...

  2. 四:海思Hi3516CV500/Hi3516DV300

    Hi3516CV500 和 Hi3516DV300 均是海思推出的 IP Camera  SoC [System-on-a-Chip:SoC芯片是一种集成电路的芯片] 芯片. 针对海思 HI3516D ...

  3. code::blocks更改编译器配置

  4. redis-desktop-manager-0.8.0.3844

    redis-desktop-manager-0.8.0.3844 下载地址: https://www.aliyundrive.com/s/Y2fobkVjAdF 链接:https://pan.baid ...

  5. gin-vue-admin 03 项目打包上线

    目录 作者视频 思路 环境要求 1. 配置nginx 2.打包前台vue代码 3.打包后台go代码 4. 上传代码到服务器 5. 后台运行power 6. 访问后台 开发场景: 1. nginx 配置 ...

  6. 详解GROUP BY 如何与 SELECT 语句进行交互?

    SELECT 列表: 矢量聚合.如果 SELECT 列表中包含聚合函数,则 GROUP BY 将计算每组的汇总值.这些函数称为矢量聚合. Distinct 聚合.ROLLUP.CUBE 和 GROUP ...

  7. Java异步编程CompletableFuture

    Java 通过多线程可以实现异步编程,下面是一个使用 Java 多线程实现异步编程的示例: public class AsyncDemo { public static void main(Strin ...

  8. 热烈祝贺 Splashtop 赢得最佳远程桌面用户满意度得分

    在 G2 的 2021 年冬季远程桌面网格报告中,Splashtop 的净发起人得分(NPS)为 93,是所有远程桌面工具中最高的. 在一份分析用户对 30 多种远程桌面解决方案的评论的报告中,Spl ...

  9. 日常Bug排查-连接突然全部关闭

    日常Bug排查-连接突然全部关闭 前言 日常Bug排查系列都是一些简单Bug的排查.笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材. Bug现场 最近碰到一个问题,一台机器上的连接数在达到 ...

  10. Java学习之数据类型转换

    package com.zhang.LectCode; public class 各种数据间的相互转换 { public static void main(String[] args) { //将St ...