V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeeSe
V2EX  ›  Apple

如何将 Rust 编译生成的二进制文件打包为 Mac 平台的 APP?

  •  
  •   LeeeSe · 2022-12-15 20:09:44 +08:00 · 2372 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试用了 cargo-bundle 库,发现打包出来的 aarch64 架构包无法在别的电脑上使用,只能自己使用,反而打包出来的 x86_64 应用可以通过转译在别的电脑上运行。楼主是 Rust 新手,暂时找不到原因。

    话说有没有更通用的办法,比如脱离 Rust 使用 Xcode ?
    8 条回复    2022-12-15 23:07:30 +08:00
    lscho
        1
    lscho  
       2022-12-15 20:13:50 +08:00
    不能运行的提示什么?
    LeeeSe
        2
    LeeeSe  
    OP
       2022-12-15 20:14:16 +08:00
    @lscho 直接提示安装包已损坏,请丢进垃圾篓
    LeeeSe
        3
    LeeeSe  
    OP
       2022-12-15 20:19:46 +08:00
    具体原因是写了一款小工具,想要分享给大家,但是竟然失败在软件打包分发问题上,希望有能力的朋友可以出谋划策,我想让这个小工具让大家都方便地用上。
    https://www.v2ex.com/t/902728#;
    lscho
        4
    lscho  
       2022-12-15 20:22:32 +08:00
    @LeeeSe 这和 Rust 没关系,macOS 默认会对可执行文件进行签名检测,没有签名(比如你直接打包)或者签名与文件不符合(比如破解版软件)都会报这个错误。关闭系统完整性保护( SIP )或者手动去除可执行文件的隔离属性就可以了。用这个:sudo xattr -d com.apple.quarantine /Applications/xxx.app

    具体你用安装包已损坏,请丢进垃圾篓搜一下就知道了
    lscho
        5
    lscho  
       2022-12-15 20:24:55 +08:00
    如果你想分享给网友使用,建议用 brew 方式,你列的那个帖子里已经有大佬推荐了。如果用下载方式,macOS 会自动打上 com.apple.quarantine 这个隔离标志,应该是你必须用开发者证书签名才行。
    LeeeSe
        6
    LeeeSe  
    OP
       2022-12-15 20:46:43 +08:00
    @lscho 感谢你的认真回答。你所说的命令我确实搜到过,但大都是互相抄写,没有说明具体原因(好在你告诉我了),并且有些麻烦不是比较好的解决方案;至于我的帖子中大佬的推荐,我当时并没有明白他的用意,只是很着急地在找报错原因。
    我现在去研究一下如何用 brew 分享 app
    LeeeSe
        7
    LeeeSe  
    OP
       2022-12-15 21:22:36 +08:00
    @lscho 请问如果使用 brew cask 发布编译好的 app 是不是还是会提示已损坏?如果使用 brew 发布的话等于是在用户端编译,意味着要安装 Rust 环境。我的理解对吗?
    ecnelises
        8
    ecnelises  
       2022-12-15 23:07:30 +08:00
    Apple Silicon 会强制要求签名,x86 的不用,连带着 Rosetta 的也不用( https://support.apple.com/zh-cn/guide/security/secebb113be1/web

    即使绕过 Mac App Store ,要在陌生人电脑上正常运行也需要签名和 Notarization 两个步骤,都需要订阅的开发者账号。我有账号,周末来研究下楼主的源码打个包
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.