小编use*_*477的帖子

使用Xcode中的MACOSX_DEPLOYMENT_TARGET为Cocoa应用程序进行条件编译

在Cocoa应用程序中,我想使用条件编译,如:

#if MACOSX_DEPLOYMENT_TARGET <= MAC_OS_X_VERSION_10_4    
    [[NSFileManager defaultManager] removeFileAtPath:path handler:nil];
#else
    [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
#endif
Run Code Online (Sandbox Code Playgroud)

我的希望是,这将避免对removeFileAtPath编译器警告:当MACOSX_DEPLOYMENT_TARGET = 10.6,因为它不应该编译该行被弃用.

它不起作用.

当MACOSX_DEPLOYMENT_TARGET = 10.6时,我收到一条警告,表示不推荐使用removeFileAtPath:.但它不应该编译那一行,所以它不应该警告它有一个弃用的方法!

(我在项目构建设置和目标构建设置中都设置了MACOSX_DEPLOYMENT_TARGET.我将BASE_SDK设置为10.6,并在两者中指定GCC 4.2.)

我究竟做错了什么?我必须条件编译的一些基本的误解?

macos xcode cocoa conditional-compilation

7
推荐指数
1
解决办法
5674
查看次数

错误?在codesign中 - 删除签名功能

我想从已使用codesign签名的Mac应用中删除数字签名.有一个未记录的选项来编码, - 删除签名,它的名字似乎就是我所需要的.但是,我无法让它发挥作用.我意识到它没有记录,但我真的可以使用这个功能.也许我做错了什么?

 codesign -s MyIdentity foo.app
Run Code Online (Sandbox Code Playgroud)

正常工作,签署应用程序

 codesign --remove-signature foo.app
Run Code Online (Sandbox Code Playgroud)

然后说磁盘活动几秒钟

 foo.app: invalid format for signature
Run Code Online (Sandbox Code Playgroud)

和foo.app已经增长到1.9 GB!(具体来说,它是foo.app/Contents/Resources/MacOS中的可执行文件,从1.1 MB增加到1.9 GB.)

当我尝试签名/取消签名二进制支持工具而不是.app时,会发生同样的事情.

有任何想法吗?


背景:这是我自己的应用程序; 我不打算打败版权保护或类似的东西.

我想分发一个已签名的应用程序,以便每次更新应用程序都不需要用户批准来读取/写入应用程序在钥匙串中的条目.但是,有些人需要通过将自己的文件夹添加到/ Resources来修改应用程序.如果他们这样做,签名将变为无效,并且应用程序无法使用自己的Keychain条目.

该应用程序可以轻松检测是否发生了这种情况.如果应用程序可以删除它的签名,一切都会好的.那些进行此修改的人需要给修改后的,现在未签名的应用程序许可才能使用Keychain,但这对我来说没问题.

macos digital-signature

6
推荐指数
3
解决办法
1万
查看次数