zoukankan      html  css  js  c++  java
  • Mac Electron App 签名后打开闪退

    背景

    昨天在测试 Mac Electron App 打包,发现不签名的应用能够正常打开,签了名的打开反而会崩溃。

    寻因

    首先我怀疑是不是自己代码导致闪退,但是在一番查找后,发现还根本没到执行我的代码就闪退了。

    然后就猜可能是我打包的参数缺了些东西。

    我使用 electron-builder 打包的,当时配置的是:

    "mac": {
      "category": "public.app-category.developer-tools",
      "target": "dmg",
      "icon": "res/logo.icns",
      "gatekeeperAssess": false
    }

    我配置参数的原则是按需设置,加上这些能够打包签名我就不会再添加其他的。

    原因

    查看了 electron-builder 的文档和网上资料后知道,苹果要求签名的应用的 runtime 必须是 hardened runtime。

    这个时候应用的一些权限会受到限制,如果没有相关权限设置就会因为权限不足而闪退。

    PS:这里有一点我比较奇怪的,大概是前几周,那时签名的应用还能打开。

    解决

    1、添加一个plist文件,设置权限。

    entitlements.mac.plist:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
      </dict>
    </plist>

    2、electron-builder配置增加

    "mac": {
      "hardenedRuntime": true,
      "entitlements": "build/entitlements.mac.plist",
      "entitlementsInherit": "build/entitlements.mac.plist"
    } 
  • 相关阅读:
    CSS 盒子模型
    一个好的创业型团队需要下面几种人
    解决关闭Hadoop时no namenode to stop异常
    Hadoop RPC实例和通信过程分析
    实现RPC框架,几行代码就够了
    Linux 文件权限详解
    HDFS Java API 详解
    HDFS客户端的权限错误:Permission denied
    MongoDB GroupBy操作, 结果集大小限制问题。
    MongoDB 查询超时异常 SocketTimeoutException
  • 原文地址:https://www.cnblogs.com/lovesong/p/11922305.html
Copyright © 2011-2022 走看看