美文网首页
Xcode UI界面调试神器-injectionX

Xcode UI界面调试神器-injectionX

作者: CoderXY | 来源:发表于2019-03-26 22:00 被阅读0次

    不用重新跑就可以更改界面元素属性的神器

    前提

    • Xcode10以上
    • 只能在模拟器上使用,因为这是在App Store下载的App,要加载bundle包。如果在真机上使用的话,是找不到bundle包的

    步骤

    1. 在Mac App Store下载InjectionX下载链接,打开。
    2. 第二步:打开Xcode项目,选择项目根目录(就是有.xcodeproj和xcworkspace的文件夹)
    3. 在项目的AppDelegate加入代码
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    #if DEBUG
    //OC
      [[NSBundle bundleWithPath:@"/Applications/InjectionX.app/Contents/Resources/iOSInjection.bundle"] load];
    //Swift
    Bundle(path: "/Applications/InjectionX.app/Contents/Resources/iOSInjection.bundle")?.load()
    #endif
    }
    
    1. command + R 运行项目,注意看 Xcode 控制台的 log日志
    Injection connected, watching /Users/xuyang/Desktop/TestInject/**
    

    看到这句话的时候说明已经OK了

    1. 在要修改的界面添加下面代码,修改完成之后command + S 保存一下就能看到效果了
    //OC
    - (void)injected{
        NSLog(@"injected--%@",self);
        self.view.backgroundColor = [UIColor greenColor];
    }
    //Swift
    @objc func injected(){
            print("injected--\(self)")
            self.view.backgroundColor = UIColor.red;
        }
    //控制台打印:
    *** Compiling /Users/xuyang/Desktop/TestInject/TestInject/ViewController.m ***
    Loading .dylib - Ignore any duplicate class warning...
    objc[33904]: Class ViewController is implemented in both /Users/xuyang/Library/Developer/CoreSimulator/Devices/6BE3C6BE-39D1-48D1-9A07-F3093399A7E9/data/Containers/Bundle/Application/3C0228A2-9487-45FB-91BA-48A39ADC9B6C/TestInject.app/TestInject (0x1079e3d28) and /Users/xuyang/Library/Containers/com.johnholdsworth.InjectionX/Data/eval101.dylib (0x1258e0160). One of the two will be used. Which one is undefined.
    2019-03-26 21:51:20.411 TestInject[33904:14812543] injected--<ViewController: 0x7fa9b4d042b0>
    

    问题

    没有看到效果的问题的总结:

    1.确认Xcode的版本10.0及以上
    2.确认 Open Project 的地址是正确的
    3.command + R确认有连接上
    4.确认已经把注入的代码写粘贴复制在真实需要改变的地方
    5.看下有没有保存成功,也就是针筒的颜色从绿色变成红色,控制台有没有打印
    6.如果修改的是cell/item上面的内容,需要上下滚动才能看到效果, 如果修改的是一个普通页面的内容,最好是退出这个页面,再进入这个页面
    

    备注

    本地新建个私有 pod,可以连接上,在私有pod 的 demo里面是可以的,但是在 development Pods 里面添加-(void)injected方法command+s控制台打印
    *** Could not locate containing project or it's logs.
    Have you customised the DerivedData path? ***
    没有达到预期效果,如果你知道答案,欢迎在👇留言
    

    相关文章

      网友评论

          本文标题:Xcode UI界面调试神器-injectionX

          本文链接:https://www.haomeiwen.com/subject/fphovqtx.html