搞懂.xm和.mm文件的逻辑
此处,在真正,新增hook代码文件,写hook代码之前,要去:
搞懂iOSOpenDev中.xm和.mm文件的逻辑
此处核心内容是:
.xm:原始的hook插件的代码.mm:从.xm自动(在Build后)自动生成的文件
->
- 所以 = 结果
- iOSOpenDev新增(hook代码逻辑的)文件时
- 是:
.xm文件 - 不是:
.mm文件
- 是:
- 写hook插件=添加hook代码逻辑时,改动的文件
- 是:
.xm文件 - 而不是:
.mm文件
- 是:
- 你每次改动更新
.xm后- iOSOpenDev内部会自动从最新的
.xm生成最新的.mm文件- 因此,旧的
.mm文件(的内容)会被新的.mm文件(的内容)覆盖掉- 所以即使,如果,你之前改动了
.mm文件,也是没用的,会被覆盖掉的
- 所以即使,如果,你之前改动了
- 因此,旧的
- iOSOpenDev内部会自动从最新的
- Xcode最终去编译(内部其实是iOS的
clang编译器)时- 不支持:
.xm- 万一
Xcode的Compile Sources中(由于失误而)加入了.xm文件,则会导致编译报错
- 万一
- 只支持:
.mm- 所以接下来,要去把
.mm加到Compile Souces,供Xcode最终编译用
- 所以接下来,要去把
- 不支持:
- 首次(
Xcode->Build)编译时,会从.xm,生成额外的.mm文件- 首次时=只用做一次
- 概述
- 需要你去
Xcode->右键->Add Files to - 去把
.mm文件加进来(导入进来,弹框选项记得选择:Copy items if needed - 此时,对应的
Xcode->Targets->Build Phases->Compile Sources中,就可以看到对应的.mm文件了
- 需要你去
- 详见
- 概述
- 注
- 后续则无需重复添加
.mm文件
- 后续则无需重复添加
- 首次时=只用做一次
- iOSOpenDev新增(hook代码逻辑的)文件时