- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用多个系统框架和第三方框架的Cocoa应用程序,其中一些框架衍生了XPC服务。我想将自己的库插入那些XPC服务的进程空间中,以便可以将信息反馈给我的主应用程序。作为具体示例,通过插入或马赫数拦截播放正在播放的音频数据。
TL; DR:当我的应用程序启动时,如何以编程方式为沙盒应用程序设置DYLD环境变量?
较长的版本…
我可以通过在启动应用程序之前设置一些shell变量来轻松地插入库(与this question建议相反):
$ export __XPC_DYLD_FORCE_FLAT_NAMESPACE=1
$ export __XPC_DYLD_INSERT_LIBRARIES=`pwd`/My.app/Contents/Frameworks/XpcMonitor.dylb
$ open My.app
int main(int argc, const char * argv[])
{
NSString* libPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:@"XpcMonitor.dylib"];
setenv("__XPC_FORCE_FLAT_NAMESPACE", "1", 1);
setenv("__XPC_DYLD_INSERT_LIBRARIES", [libPath UTF8String], 1);
return NSApplicationMain(argc, argv);
}
<key>LSEnvironment</key>
<dict>
<key>__XPC_DYLD_FORCE_FLAT_NAMESPACE</key>
<string>1</string>
<key>__XPC_DYLD_INSERT_LIBRARIES</key>
<string>/Applications/My.app/Contents/Frameworks/XpcMonitor.dylib</string>
</dict>
[NSTask launchedTaskWithLaunchPath:[[NSBundle mainBundle] executablePath]
arguments:[NSArray array]];
5/30/14 9:55:04.000 AM kernel[0]: Sandbox: appleeventsd(57) deny file-read-metadata /Library
5/30/14 9:55:04.000 AM kernel[0]: Sandbox: appleeventsd(57) deny mach-lookup com.apple.ocspd
appleeventsd[57]: <rdar://problem/11489077> A sandboxed application with pid 2119, "MyAppHelper" checked in with appleeventsd, but its code signature could not be validated ( either because it was corrupt, or could not be read by appleeventsd ) and so it cannot receive AppleEvents targeted by name, bundle id, or signature. Error=ERROR: #-67061 { "NSDescription"="SecCodeCheckValidity() returned -67061, <SecCode 0x7fa30bc0bd20 [0x7fff7b46ff00]>." } (handleMessage()/appleEventsD.cp #2072) client-reqs-q
$ spctl --verbose=4 --assess --type execute ~/Desktop/MyApp.app/
/Users/Jason/Desktop/MyApp.app/: accepted
source=Developer ID
最佳答案
行。您有几件事不正确:
首先,Setting DYLD variables for sandboxed app at runtime答案是正确的:DYLD将限制自己处理var的原因有三个,其中一个原因是应用程序使用权利进行了代码签名(另外两个是strictBySetGUid或strictedBySegment)。之所以对您有用,是因为当时您可能没有对应用程序代码进行签名。
其次,__ XPC_ *环境变量只是普通变量的包装器,libxpc.dylib在_xpc_collect_environment中使用了它们:具体来说,检查10.10.3的代码,您将看到:
__xpc_collect_environment:
0000000000004970 pushq %rbp
....
00000000000049f7 leaq 0x1daa1(%rip), %rsi ## literal pool for: "__XPC_"
00000000000049fe callq __xpc_has_prefix
关于macos - 在运行时为沙盒应用程序设置DYLD变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957069/
我正在尝试运行PowerLoom的Java版本,但是当我尝试在终端中启动它时,出现以下错误消息: dyld: Symbol not found: __cg_jpeg_resync_to_restart
我的项目已成功构建,但我不知道发生了什么?现在它显示了这个错误,我已经从 stackoverflow 和其他来源阅读了很多类似的问题,但没有任何帮助,这里是错误的快照。 我仅使用 SQLite.Swi
我已经将macos更新为Mojave,并且在更新了命令工具之后,当我运行我的C++程序时,出现以下错误 dyld:/Users/rameshkolluru/Dropbox/1D_Multiphase_
我正在尝试构建由 Apple 在此处发布的开源 DYLD: http://www.opensource.apple.com/source/dyld/dyld-97.1/ 我复制了每个文件并尝试构建 X
我更新了 XQuartz,现在它没有加载,提示: Dyld Error Message: Library not loaded: /opt/X11/lib/libfreetype.6.dylib
当我尝试在手机上安装项目时,出现错误:“dyld:未加载库:”,并且在文件“dyld`__abort_with_payload:”中出现了线程1。但是在模拟器上,一切都很好。 因此,我尝试通过测试逐步
当我尝试运行 UI 和单元测试时,出现异常: dyld: could not load inserted library '/private/var/containers/Bundle/Applica
当我尝试构建我的目标时,动态链接器出现此错误: dyld: Library not loaded: @rpath/iPhoneSimulatorRemoteClient.framework/Versi
我有一堆动态库,我需要在运行时从应用程序包中加载它们。我注意到,如果我将我的 dylib 放在 /usr/lib 文件夹中,那么应用程序就可以加载它。我已经阅读了 install_name_tool
当我从命令行运行 iPhone 应用程序时,向项目添加框架时遇到一些困难。我的最终目标是从自动构建过程运行应用程序测试。 当我从 xCode 运行我的应用程序时: 我向我的目标添加了“复制文件”构建阶
我已经使用xcode5.0在iOS 7和iOS6设备上部署了我的应用程序。当我在iOS6上运行时,我的应用程序崩溃了。当我收到崩溃日志时,出现以下错误: Dyld错误消息: dyld: Symbol
将Xcode升级到版本11.1(11A1027)后,我的iOS应用(MyApp)在开始运行时在Xcode中崩溃,并显示以下运行时错误: dyld:找不到符号:___chkstk_darwin 引用自:
我正在尝试使用合成语音使我的代码与 iOS 6 和 7 兼容。我希望它适用于 iOS 7 而不适用于 iOS 6。 问题是,当我在 iOS 6 的模拟器中运行时,它甚至在模拟器启动之前就出现以下错误:
当我尝试将应用程序构建到真正的iOS设备上时,就会发生这种情况。我正在使用Cocoa Touch Framework(在iOS 8 SDK中引入)。在iOS模拟器上可以正常工作。 最佳答案 您的设备也
我一直收到有关我的应用程序在 iOS 6 中加载时崩溃的报告。它是使用 iOS 8 SDK 构建的,在 iOS 7 和 8 上运行良好。我刚刚设法拿到一台 iOS 6 设备进行测试,它确实在启动时崩溃
尝试在 xcode 10 中使用 cocoapods 构建一个 cordova 项目,在 Debug模式下一切正常,但当发布到 Testflight 时,它会立即崩溃并显示错误消息。 Exceptio
我有一个仅在调试配置中使用 SimulatorStatusMagic 的项目。所以我的 Podfile 有以下行: pod 'SimulatorStatusMagic', :configuration
苹果操作系统 10.13.4 我在 shell 中写了命令 'dyldinfo',但是出错了-bash:dyldinfo:找不到命令 希望你能帮助我 最佳答案 在最新版本的 macOS 上,您可以使用
我有一个专门的共享库,它在可执行文件的执行期间动态加载。该库提供函数 b()。此函数依次调用函数 a()。 a 函数是在可执行文件中定义的,而不是库本身,因此我希望能够从库中调用一些可执行文件的代码。
我正在尝试在 OS X (10.7.5) 下对共享库进行版本控制,但我无法让 dyld 识别最大兼容版本(最低版本也可以)。考虑下面的测试代码和以下场景: 二进制链接到 1.0 版本的库,兼容版本 1
我是一名优秀的程序员,十分优秀!