ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-05-26 12:03:00  阅读:539  来源: 互联网

标签:macos 公证 app dmg 签名 file LBCast


关于如何命令行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出问题了

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

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

 

 

 

 

 方框里的   -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=E3XXXXXXXXX
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,签名,file,LBCast
来源: https://www.cnblogs.com/zndxall/p/12964641.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有