macos 签名+公证app生成dmg后,安装使用过程中崩溃

摘要:
然而,有一天,人们发现安装后,它在打开使用时崩溃了。查看崩溃信息,这是因为未能获得麦克风权限。然而,在首选项设置中,麦克风启用了LBCast.app软件的权限,但我使用xcode完成了整个编译签名公证过程,并生成了dmg。安装不会有问题。简单的xcodebuild编译的应用程序也可以正常使用,然后一步一步地检查和验证脚本过程:验证应用程序在签名后是否仍然可以使用,验证应用程序是否在公证后仍可以使用,在生成dmg之前的最后一步中验证应用程序能否仍然使用,最后发现签名代码签名存在问题。

关于如何命令行macos 打包+签名+公证+生成dmg的过程,参考我的另一篇博客:https://www.cnblogs.com/zndxall/p/12072353.html

mac 生成dmg是今年年初才要求必须公证后才能使用,公证前必须要签名才可以,前期我使用简单的codesign -f -s "$cert_file" -v LBCast.app --deep,然后签名后公证生成dmg就可以正常使用。

可是,某一天发现,安装后打开使用就崩溃,看崩溃信息,是在获取麦克风权限失败了,但是偏好设置中麦克风已经对软件LBCast.app 开启了权限但是我使用xcode完成整个编译-签名-公证过程,生成dmg,安装就不会有问题,单纯的xcodebuild编译的app也可以正常使用,然后对脚本过程逐级检查验证:验证签名后app是否还能使用,验证公证后app是否还能正常使用,验证生成dmg前的最后一步app是否还能使用,最后发现是签名codesign出问题了。 (可能是apple审核安全机制升高导致,不确定)

(重新安装前必须使用tccutil reset All  bundleid 清除所有权限)

分析:公证前要求必须打开强制运行时,并且必须带时间戳,xcode已经打开了强化运行时,xcodebuild编译的app也可以正常使用,但是命令行codesign签名还是不能用,是不是命令行需要带上强化运行时对于的权限配置文件,这样分析后,在查看xcodebuild命令行我们发现了如下关键信息:

 macos 签名+公证app生成dmg后,安装使用过程中崩溃第1张

 方框里的   -o runtime --entitlements LBCast.app.xcent   就是突破口  -o runtime 表示打开强化运行时 , --entitlements LBCast.app.xcent  就是相关的配置,打开LBCast.app.xcent 文件内容如下:

<?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.automation.apple-events</key>
    <true/>
    <key>com.apple.security.cs.disable-executable-page-protection</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
    <key>com.apple.security.device.audio-input</key>
    <true/>
</dict>
</plist>

和LBCast.entitlements内容是一样的

解决:正确的命令如下:

cert_file=EA321xxxxxxx
entitlements_file=LBCast.entitlements
cast_audio_dir=LBCast.app/Contents/Resources/HPOfficeCastResources.bundle/Contents/Resources/HP_Video_Device_driver
codesign -f --deep --timestamp -o runtime -v -s "$cert_file" $cast_audio_dir/"Cast Audio.driver/Contents/MacOS/Cast Audio"
codesign -f --deep --timestamp -o runtime -v --entitlements $entitlements_file -s "$cert_file" LBCast.app

  

免责声明:文章转载自《macos 签名+公证app生成dmg后,安装使用过程中崩溃》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS与CSS阻止元素被选中及清除选中的方法总结Delphi2007升级到Delphi 2010总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IVR交互式语音应答系统

ZingServ平台IVR子系统介绍 IVR系统的中文译名为"交互式语音应答系统",然而,真正的IVR系统早已超出这种中文译名所描述的功能范围--IVR是一种功能强大的电话自动服务系统。对用户来说,只有理解了这一点,才能真正了解IVR系统的价值;而对产品提供商来说,也只有理解了这一点,才能真正明确产品的应用范围和设计目标。  在ZingServ一体化呼叫中...

Windows的应用管理工具 PortableApps,Chocolatey和Ninite

以前为了让我的firefox变成portable的,我使用了PortableApps,它不只是做软件的绿色版,而且也是一个软件的管理平台,可以通过它来管理软件的更新,挺方便的。 前段时间试用ScriptCS(参见我的博客把C#当作脚本语言来用),又使用了Chocolatey,它是一个类似NuGet的包管理工具,可以理解NuGet管理你的项目级别的包,但是C...

功能点方法

功能点分析是一种从用户视角度量软件开发的标准方法。 功能点分析的目的 功能点分析是基于原始需求,通过确定提供给用户的软件的功能数量来度量软件规模。了解了这一点,可知功能点分析的目的是: 度量用户所要求和接受的功能 度量不依赖于实施技术的软件开发和维护的规模(意见:度量软件开发和维护的规模而且不依赖于实现技术) 除了达到以上的目的外,功能点计数过程还应...

IAP

IAP,英文全称In-App Purchase,是指在iPhone App中出现的“软件内付费内容”。IAP的特点如下:1.IAP使得用户无需离开软件,便可无缝升级软件功能或扩充内容。2.IAP支持付费后下载,所以可以有效的防止盗版。3.开发者无需额外推出试玩版本游戏,直接在免费版本中加入IAP,允许用户付费升级即可,节约开发成本。4.开发者可以无限推出某...

两种方法上传本地文件到github

https://www.jianshu.com/p/c70ca3a02087 自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败。最重要的原因是我习惯本地编辑,完成以后再一起上传github。看过了几个教程,总结出最适合自己的比较简单的方法。 两种方法上传本地文件到github 1....

如何扩展 Create React App 的 Webpack 配置

CreatereactApp(以下简称 CRA)是创建react应用的一个脚手架,它与其他脚手架不同的一个地方就是将一些复杂工具(比如webpack)的配置封装了起来,让使用者不用关心这些工具的具体配置,从而降低了工具的使用难度。 但是对于一些熟悉webpack的开发者来说,他们可能想对 webpack 配置做一些修改,这个时候应该怎么办呢? 其实我们可以...