Mac App手动签名大法

编程入门 行业动态 更新时间:2024-10-28 10:30:56

Mac App手动签名<a href=https://www.elefans.com/category/jswz/34/1768381.html style=大法"/>

Mac App手动签名大法

目前看来不走原生开发就是一条不归路,而且是走的磕磕绊绊。

当XE8风风火火出现的时候,我还在坚守XE4,因为某个历史遗留问题不得不继续在此版本上填坑。


App需要发布,虽然不上架,但是也需要给他签个名,好让其在默认安全级别的Mac OS中运行,否则会因为来自不明身份的开发者而无法打开。


一、先说说XE4开发的Mac App发布到Mac store中的问题

XE4出现的时候,MacOS 基本还是10.8的天下,所以当时一切都相安无事,现在已经是10.10快速普及的时候,而在Mavericks,也就是10.9的时候苹果的发布签名必须要增加一个新的参数--deep,

所以当我们选择Target Platforms中的目标位App Store时,并在MacDeveloper Profile中输入我们对应的证书后(上架app 应该用的是发布证书3rd 开头)编译,就会提示:

code object is not signed at all


国外有个解决方法是替换codesign为旧版本即可:.html



2、言归正传,现在讲讲如何手动签名的事情

首先我们需要先花$99申请Mac开发的授权,然后获取Production下面的Developer ID类型的证书



然后把我们的app输出到Mac 中

就可以进行签名了

打开终端,cd到我们app所在的目录中,执行命令

codesign -f -s "Developer ID Application: XXXXXX (XXXXX)" -v "application_name.app" --deep
终端对应输出:

application_name.app: signed bundle with Mach-O thin (i386) [xx.xx.xxx]
检查一下签名是否成功:

spctl --verbose=4 --assess --type execute application_name.app
如果是签名成功,则返回

application_name.app: accepted
source=Developer ID
如果有问题,则有对应的提示,App中的MacOS目录中有多余的文件

application_name: a sealed resource is missing or invalid

注意:目前看来App的包中,MacOS这个目录中不能放一些资源文件,否则是无法签名的,应该统一移到Resources中,这才符合苹果的做法。不然提交到App Store也是会被打回来的参考:.html



补充一下上传appstore的手动签名方式:

这个时候需要用到3rd开头的两个证书了,Application用于给app签名的,Installer是用于生成pkg文件的

第一步:

codesign -f -s "3rd Party Mac Developer Application: xxxx" -v --deep "my.app" --entitlements Entitlements.plist [里面有沙盒权限的设置,

参考:.html]

第二步:

productbuild \
--component my.app /Applications \
--sign "3rd Party Mac Developer Installer: xxxx" \
--product my.app/Contents/info.plist my.pkg


参考:.php?tid=97021

更多推荐

Mac App手动签名大法

本文发布于:2024-03-08 01:23:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719477.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:大法   Mac   App

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!