• drunkenMouse
    2019-03-23
    Clone一下代码弄得有点懵,不知道怎么克隆。然后我用了另一种方式使用了injection

    1.在App Store下载InjectionIII, 打开。
    2.选择项目的根目录
    3.项目的Appdelegate加入:
    #if DEBUG
     // iOS
        [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
    #endif

    XCode10 是这个
    #if DEBUG
     // iOS
        [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle"] load];
    #endif

    而后启动,修改,保存,就会卡到断点位置了。
    展开
    
     25
  • mαnajay
    2019-03-23
    InjectionIII 上面有个 issue 是解决 pod 组件引入修改源码无法进行注入的问题 https://github.com/johnno1962/InjectionIII/issues/34, https://github.com/johnno1962/InjectionIII/issues/53 , 使用组件后接入还是有点麻烦
    
     12
  • Love mi
    2019-03-28
    1.在App Store下载InjectionIII, 打开。
    2.选择项目的根目录
    3.项目的Appdelegate加入:
        [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];
    运行报
    Error loading /Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle/iOSInjection: dlopen(/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle/iOSInjection, 265): Symbol not found: _$s19ArrayLiteralElements013ExpressibleByaB0PTl
      Referenced from: /Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle/iOSInjection
      Expected in: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/libswiftCore.dylib
     in /Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle/iOSInjection
    展开
    
     6
  • Hyman
    2019-03-28
    command+s就没有人报错误吗?
    Loading .dylib ...
    objc[4708]: Class ViewController is implemented in both /Users/hyman/Library/Developer/CoreSimulator/Devices/7C19EFEC-F0B4-4405-979A-358FA75F4A4F/data/Containers/Bundle/Application/A1A3313C-9092-4BBA-B2EF-604ECAD508D3/MTInjectionOC.app/MTInjectionOC (0x10f488d10) and /Users/hyman/Library/Containers/com.johnholdsworth.InjectionIII/Data/eval104.dylib (0x12d168138). One of the two will be used. Which one is undefined.
    💉 Loaded .dylib - Ignore any duplicate class warning ^
    展开
     1
     6
  • SLY
    2019-03-25
    @Link 回复楼上那位同学,把 file -> Workspace Setting -> Build System, 改为Legacy Build System模式,默认的New Build System(Default)模式,是不会编译pod 里面的改动的
    
     6
  • 亡命之徒
    2019-03-29
    项目使用了cocopods、这个插件用不了呀,保存的时候报错😭,新建的demo使用就没问题,麻烦老师解答下
    
     5
  • Geek_48dbbf
    2019-04-18
    真机上如何实现注入动态库实时调试?
    
     4
  • Jersey、
    2019-04-01
    刚开始没重写 - (void)injected { } , 发现修改一直没反应, 控制台还收到了相应警告
    💉 Injection connected, watching /Users/user/JerseyCafe/JerseyCafe/MySampleCode/JSDPlayground/**
    💉 *** Compiling /Users/user/JerseyCafe/JerseyCafe/MySampleCode/JSDPlayground/JSDPlayground/Class/Launch/JSDHomeVC.m ***
    💉 Loading .dylib ...
    objc[22080]: Class JSDHomeVC is implemented in both /Users/user/Library/Developer/CoreSimulator/Devices/042DBB6D-8059-43E7-A609-3034F6D949AD/data/Containers/Bundle/Application/4BCF4C6E-3650-484C-BAE8-7ACB3B3A3E6E/JSDPlayground.app/JSDPlayground (0x10695a278) and /Users/user/Library/Containers/com.johnholdsworth.InjectionIII/Data/eval101.dylib (0x12cf821d8). One of the two will be used. Which one is undefined.
    💉 Loaded .dylib - Ignore any duplicate class warning ^
    然后找了下 github Issue [Issue](https://github.com/johnno1962/InjectionIII/issues/101) 原来要在相应的文件下重写 injected 方法, 在 .m 下添加下列代码即可
    Swift:
    extension UIViewController {
      @objc func injected() {
        viewDidLoad()
        viewWillAppear(true)
        viewDidAppear(true)
      }
    }
    OC:
    - (void)injected {
        
        [self viewDidLoad];
        [self viewWillAppear:YES];
        [self viewWillDisappear:YES];
    }
    直接修改代码即可, command + s 自动刷新。
    不过还是收到相应警告。
    展开
    
     4
  • 景迪
    2019-03-23
    起来第一件事就是看看有没有更新😄
    
     4
  • Melvins
    2019-03-28
    @drunkenMouse,用你的方法在xcode 10.2上会出现👇错误提示,求教!!!

    Error loading /Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle/iOSInjection10: dlopen(/Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle/iOSInjection10, 265): Symbol not found: _$SBOWV
      Referenced from: /Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle/iOSInjection10
      Expected in: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/libswiftCore.dylib
     in /Applications/InjectionIII.app/Contents/Resources/iOSInjection10.bundle/iOSInjection10
    展开
     4
     3
  • 景天儿
    2019-05-28
    蛮好用的,但是有几个需要注意的地方:
    1. 进行swizzling的类不要动态修改,否则二次交换,会引起死循环。
    2. 不支持方法的删除:删除后,方法调用仍然有效,不抛异常。
    3. 不支持新增类:新增类引入后使用无效。但类的重命名是有效的。
    4. 属性新增、删除、修改:反射上体现不出来。
    其中后三个的原因,不知道戴铭老师有没有什么见解。
    在我的角度来看,应该不是InjectionIII的问题,可能与苹果动态库调用有关。
    展开
    
     2
  • 旺旺
    2019-04-24
    我这保存后悔报错
    💉 *** Compiling /Users/zhaowangwang/Documents/中电科36所svn/E-Mobile/MeCenterViewController.m ***
    💉 *** Re-compilation failed (/Users/zhaowangwang/Library/Containers/com.johnholdsworth.InjectionIII/Data/command.sh)
    fatal error: malformed or corrupted AST file: 'could not find file '/Users/zhaowangwang/Documents/中电科36所svn/E-Mobile/RongIMLib.framework/Headers/RCAmrDataConverter.h' referenced by AST file '/Users/zhaowangwang/Library/Developer/Xcode/DerivedData/E-Mobile-brkkzascastenicojgygpmgoepqm/Build/Intermediates.noindex/PrecompiledHeaders/SharedPrecompiledHeaders/9438762758094351804/E-Mobile-Prefix.pch.gch''
    1 error generated.
     ***
    怎么破?
    展开
    
     2
  • Daniel
    2019-04-10
    ios10之后由于沙盒的限制 应用无法加载自身bundle之外的动态库 这个工具只能在模拟器上使用
    
     2
  • 徐秀滨
    2019-03-26
    请问为啥我保存后,断点执行到了,但是过了之后就闪了,一脸懵逼。。。
    
     2
  • mqhong
    2019-03-23
    讲的有点深了 有没有推介的gnustep源码必读的类实现 和阅读的方法😂

    作者回复: 我觉得你在使用库有疑问时,或者看到分析有疑点时,带着问题去看,效果会很好。

    
     2
  • 给力的Andy
    2019-07-09
    崩溃的各位同学,看看项目中是否用了rac,这个会导致crash
    
     1
  • 韩小醋
    2019-07-03
    老师,是否可以讲解一下flutter attach 的原理,公司最近准备搞flutter 动态化
     1
     1
  • 21💤
    2019-04-09
    - (void)injected
    + (void)injected
    INJECTION_BUNDLE_NOTIFICATION
    我这边所有的修改只有写在这3个方法里才会刷新,并不能像图片上那样随修随变,并一直报dylib 重复警告

    inject(tmpfile: String) 方法的代码大都是新类替换旧类,但是当我在- (void)injected里写入[self viewDidLoad];后,会发现并没有替换,而是重新创建了一遍新的UI,有请踩过坑的老哥发言😂

    展开
    
     1
  • 以
    2019-03-28
    @Hyman 出现的问题怎么解决的?
    💉 Loading .dylib ...
    objc[10390]: Class ViewController is implemented in both /Users/lutaohua/Library/Developer/CoreSimulator/Devices/37453FFB-A4BA-4761-B590-BFAEB3C54A5D/data/Containers/Bundle/Application/342F3B0F-D638-4A99-89C6-3C8A04A25135/Mach_O_test.app/Mach_O_test (0x100b65ea8) and /Users/lutaohua/Library/Containers/com.johnholdsworth.InjectionIII/Data/eval101.dylib (0x11e8e3218). One of the two will be used. Which one is undefined.
    💉 Loaded .dylib - Ignore any duplicate class warning ^
    展开
    
     1
  • Tim叔
    2019-03-27
    xocde10.1下编译错误open /~/bin/unhide no such file or
    
     1
我们在线,来聊聊吧