沙盒问题

时间:2012-05-30 00:44:09

标签: macos sandbox

所以我必须实施沙盒才能将我的Mac应用程序保存在Mac应用程序商店中。当我启用沙盒时,我的应用程序大部分都可用。我使用“top”命令获取整个用户系统的CPU信息和RAM信息。使用沙盒,我无法再访问这些功能。这是收到的运行时错误:

/bin/sh: /usr/bin/top: Operation not permitted
/bin/sh: /usr/bin/top: Operation not permitted
2012-05-29 20:40:57.911 QuickToggles[53714:403] *** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]
2012-05-29 20:40:57.928 QuickToggles[53714:403] (
    0   CoreFoundation                      0x00007fff986bcf56 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff97f98d5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff98666370 -[__NSArrayI objectAtIndex:] + 208
    3   QuickToggles                        0x0000000100001961 -[StatusBarAppAppDelegate updateInfo:] + 177
    4   Foundation                          0x00007fff94666f40 __NSFireTimer + 102
    5   CoreFoundation                      0x00007fff98671934 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    6   CoreFoundation                      0x00007fff98671486 __CFRunLoopDoTimer + 534
    7   CoreFoundation                      0x00007fff98651e11 __CFRunLoopRun + 1617
    8   CoreFoundation                      0x00007fff98651486 CFRunLoopRunSpecific + 230
    9   HIToolbox                           0x00007fff9806b4d3 RunCurrentEventLoopInMode + 277
    10  HIToolbox                           0x00007fff980726d3 ReceiveNextEventCommon + 181
    11  HIToolbox                           0x00007fff9807260e BlockUntilNextEventMatchingListInMode + 62
    12  AppKit                              0x00007fff90441e31 _DPSNextEvent + 659
    13  AppKit                              0x00007fff90441735 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
    14  AppKit                              0x00007fff9043e071 -[NSApplication run] + 470
    15  AppKit                              0x00007fff906ba244 NSApplicationMain + 867
    16  QuickToggles                        0x0000000100001882 main + 34
    17  QuickToggles                        0x0000000100001854 start + 52
    18  ???                                 0x0000000000000003 0x0 + 3
)

1 个答案:

答案 0 :(得分:0)

听起来您想要显示有关每个正在运行的进程的信息,例如Activity Monitor的主窗口。你不能在沙盒中做到这一点。周期。*

因此,请提交一份雷达,要求Apple为您提供一种方法,并解释您认为合理的原因。同时,保持未装箱。如果Apple告诉你你不应该这样做(我认为这可能是一个结果),那么你必须删除该功能,或者停止在App Store中销售(并找到一些转换方式)您现有的用户到另一个频道。)

实际上,它看起来像你的应用程序所做的一半不会在沙盒中工作 - 并且已经违反了MAS指南,这意味着每次提交更新都会有被拒绝和被卡住的风险。

*实际上,您可以通过例如将脚本发送到Activity Monitor并通过UI脚本等来抓取其输出,如果用户已启用可访问性,但即使这样可行,MAS审阅者也不会喜欢它...所以不要。