Xcode 编译项目为什么一定要依赖模拟器? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gorvery
V2EX    Xcode

Xcode 编译项目为什么一定要依赖模拟器?

  •  
  •   Gorvery 320 天前 4491 次点击
    这是一个创建于 320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    买的 macbook pro 只有 512G ,磁盘空间捉襟见肘。Xcode Simulator Runtime 就占了 20G 。

    实际上我每次编译的时候,都是真机编译调试,这个模拟器 runtime 感觉用不上,但如果删掉真机也没办法编译了。

    有大佬知道怎么才能删掉 runtime 还能保证真机编译正常使用吗?

    19 条回复    2024-11-25 09:45:00 +08:00
    pheyer
        1
    pheyer  
       320 天前
    有可能担心你手机掉了没办法调试了^_^
    feikaras
        2
    feikaras  
       320 天前 via iPhone
    去扩容呗。解决模拟器完了你还要解决其他事情。
    drymonfidelia
        3
    drymonfidelia  
       320 天前
    我之前也问过这个问题 /t/1084220
    不过我硬盘有 2TB ,只是单纯不想存苹果的屎
    Gorvery
        4
    Gorvery  
    OP
       320 天前
    @feikaras 有靠谱的扩容店铺吗?
    Gorvery
        5
    Gorvery  
    OP
       320 天前
    @drymonfidelia 后来你有找到什么解决方案吗
    Belmode
        6
    Belmode  
       320 天前
    干嘛不一次性到位呢,嘿嘿
    songray
        7
    songray  
       320 天前 via iPhone
    调试没办法,不过打包我都是用 docker-osx 这个项目,在服务器上 ci/cd 打包的。
    docker-osx 是一个 macos 容器项目,同时还支持真机调试。
        8
    songray  
       320 天前 via iPhone   1
    @songray 再提一嘴,没有 gpu 加速
    MacsedProtoss
        9
    MacsedProtoss  
       320 天前 via iPhone   1
    有没有一种可能 虽然它叫做 simruntime 但是里面有真机的 sdk
    so898
        10
    so898  
       319 天前
    simulator 和 runtime 的安装包是绑定的,你可以安装完了单独把 simulator 给全干掉,不过这样做也节约不了多少硬盘空间
    更进一步解决问题需要把 Runtime 带的 Framework 里面的 x86&arm64 simulator 对应的 arch 也给干掉
    不过上面只是理论上可行,建议可以弄个大硬盘,并从外置硬盘启动 MacOS
    BernieDu
        11
    BernieDu  
       319 天前
    不算模拟器吧,每个 iOS 版本都有不同的库来支持新特性,你在不同版本的手机编译的时候,就会从手机 copy Runtime 到你的电脑上。 比如 iOS17 的 tipkit 框架,17.4 的 Translation 框架,18 又有 swiftdata2 ,sfsymbol6 ,还有一些框架的小修补,不可能你手机升级就要升级 xcode 来支持吧(我印象中远古时代真的是这样。。),所以想减少这个文件大小就是少编译几个不同的 iOS 版本,比如固定版本的模拟器或者测试机
    iamqk
        12
    iamqk  
       319 天前   1
    像楼上说的 手机升级后会留下很多历史的硬件版本 可以删除节省空间 如果以前用了模拟器 也可以把模拟器全部删掉节省空间 在不行就外接 typecssd 把不经常用的资料导出去一些 扩容也是一条方案 我以前开发机 512 一般可以满足需求了
    xyooyx
        13
    xyooyx  
       318 天前
    “每次编译的时候,都是真机编译调试”这个不具备普遍性,开发工具需要尽量多的满足场景
    Gorvery
        14
    Gorvery  
    OP
       318 天前 via Android
    @lqw3030 真机调试可以满足基本上所有场景,但是反之不成立呀。除非是手头没有其他设备,为了不同设备之间的 ui 适配,不然一般在有真机的情况下优先选真机的。
    Gorvery
        15
    Gorvery  
    OP
       318 天前 via Android
    @Belmode 消费力比较弱,当时舍不得。现在如果再来一次我一定会选 1T 的
    Gorvery
        16
    Gorvery  
    OP
       318 天前 via Android
    @MacsedProtoss 那个不是设备支持文件吗?新的真机首次连接的时候,xcode 需要复制一个几个 G 的支持文件,我以为那个就是真机的库
    Gorvery
        17
    Gorvery  
    OP
       318 天前 via Android
    @so898 嗯嗯,这个是好办法,我已经买了一个三星的 ssd 移动硬盘了,好多不是经常访问的数据都丢进去了
    Gorvery
        18
    Gorvery  
    OP
       318 天前 via Android
    @BernieDu 你说的这个是不是每一个新机连接 Xcode 的时候需要复制的那个文件?好像是设备支持文件,这个也有好几个 G ,但跟 runtime 那个不是一个文件。。
    MacsedProtoss
        19
    MacsedProtoss  
       318 天前 via iPhone
    @Gorvery 那个新机连接产生的 device support 文件不影响你编译 影响你调试运行… 在你从来没插入过物理机的时候你只要有 simruntime 就可以编译出包并且这个包可以在物理机器上跑
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2826 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 13:34 PVG 21:34 LAX 06:34 JFK 09:34
    Do have faith in what you're doing.
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11940834-2', 'v2ex.com'); ga('send', 'pageview'); ga('send', 'event', 'Node', 'topic', 'xcode'); ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86