- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于 iPhone 对其应用程序进行沙箱处理,我无法访问 /bin/
文件夹。因此,我使用 SSH 连接从 iPhone 获取 /bin/date
二进制文件,并将其包含在我的项目中。当我使用 NSLog
时,我的文件的路径是正确的:/var/mobile/Applications/95078888-DDA8-4C1E-93DC-1F9E0A26E70A/Documents/date
。下面列出了我遇到的问题。有谁知道我该如何修复这个错误?
*注意:如果我在模拟器中运行它并使用此代码执行任何与 mac OSX 兼容的二进制文件,它就可以工作,但是当我尝试使用 iPhone 二进制文件在设备上运行它时,就会出现问题。
错误:
2012-08-09 14:23:13.757 TestBinary[7891:707] Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'couldn't fork: errno 1'
First throw call stack: (0x359b388f 0x335d7259 0x359b3789 0x359b37ab 0x34deb915 0xda5af 0x3590d3fd 0x330cee07 0x330cedc3 0x330ceda1 0x330ceb11 0x330cf449 0x330cd92b 0x330cd319 0x330b3695 0x330b2f3b 0x336a522b 0x35987523 0x359874c5 0x35986313 0x359094a5 0x3590936d 0x336a4439 0x330e1cd5 0xd9ecd 0xd9e98)
terminate called throwing an exception
Program received signal: “SIGABRT”. Data Formatters temporarily unavailable, will re-try after a 'continue'. (Can't find dlopen function, so it is not possible to load shared libraries.)
mi_cmd_stack_list_frames: Not enough frames in stack.
mi_cmd_stack_list_frames: Not enough frames in stack.
调用日期文件的代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@/date", documentsDirectory];
NSLog(@"%@", path);
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: path];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
label.numberOfLines=0;
label.text = string;
[string release];
[task release];
我的 NSTask 文件:
#import <Foundation/NSObject.h>
@class NSString, NSArray, NSDictionary;
@interface NSTask : NSObject
- (id)init;
- (void)setLaunchPath:(NSString *)path;
- (void)setArguments:(NSArray *)arguments;
- (void)setEnvironment:(NSDictionary *)dict;
- (void)setCurrentDirectoryPath:(NSString *)path;
- (void)setStandardInput:(id)input;
- (void)setStandardOutput:(id)output;
- (void)setStandardError:(id)error;
- (NSString *)launchPath;
- (NSArray *)arguments;
- (NSDictionary *)environment;
- (NSString *)currentDirectoryPath;
- (id)standardInput;
- (id)standardOutput;
- (id)standardError;
- (void)launch;
- (void)interrupt;
- (void)terminate;
- (BOOL)suspend;
- (BOOL)resume;
- (int)processIdentifier;
- (BOOL)isRunning;
- (int)terminationStatus;
@end
@interface NSTask (NSTaskConveniences)
+ (NSTask *)launchedTaskWithLaunchPath:(NSString *)path arguments:(NSArray *)arguments;
- (void)waitUntilExit;
@end
FOUNDATION_EXPORT NSString * const NSTaskDidTerminateNotification;
#endif
编辑1:
我使用以下目录解压:https://github.com/samsoffes/ssziparchive
这是我要解压缩并执行的代码:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path2 = [[NSBundle mainBundle] pathForResource:@"date" ofType:@"zip"];
[SSZipArchive unzipFileAtPath: path2 toDestination:documentsDirectory];
NSString *path = [NSString stringWithFormat:@"%@/date", documentsDirectory];
NSFileManager* fileManager = [NSFileManager defaultManager];
NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithDictionary:[fileManager attributesOfItemAtPath:path error:nil]];
[attributes setValue:[NSNumber numberWithShort: 0777]
forKey:NSFilePosixPermissions];
NSError* err;
[fileManager setAttributes: attributes ofItemAtPath: path error: &err];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: path];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
label.numberOfLines=0;
label.text = string;
[string release];
[task release];
最佳答案
我不确定为什么会发生这种情况,但是当 Xcode 构建时,它会以某种方式损坏date
二进制文件。如果您查看原始 date
文件(在您的项目文件夹下),然后在 Xcode build 目录下找到相同的文件(例如):
/Users/myusername/Library/Developer/Xcode/DerivedData/HelloJB-gsokzlpnejddadbccgrfkxnumkyl/Build/Products/Release-iphoneos/HelloJB.app
您可以对这两个文件运行 diff
命令,它会告诉您这些二进制文件不同。这足以导致这个问题。
出于某种原因,Xcode 正在查看该类型的资源,并对其执行某些操作。例如,我知道它会尝试在应用程序的 png 资源上使用某种 pngcrush
实用程序。也许这很相似。
无论如何,我发现解决此问题的一种方法是在 Mac 上压缩 date
文件。然后,将 date.zip
作为捆绑资源包含在您的项目中。清理并构建。 Xcode 不会损坏 zip 文件。
现在,当您的应用启动时,需要从其捆绑资源中解压 date.zip
文件,并将解压版本存储在文档中,或者 < strong>缓存,或者任何你想要的地方。您可能还需要记住设置执行权限。
See this for programmatically unzipping files
更新:
之后,您可能需要将文件设置为具有可执行权限。像这样的事情:
NSFileManager* fileManager = [NSFileManager defaultManager];
NSMutableDictionary* attributes = [[NSMutableDictionary alloc] init];
NSNumber* permission = [NSNumber numberWithLong: 0755];
[attributes setObject:permission forKey: NSFilePosixPermissions];
NSError* err;
[fileManager setAttributes: attributes ofItemAtPath: filePath error: &err];
关于iphone - 在越狱的 iPhone 上执行二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889742/
我正在为 Cydia 做一个调整,我想在状态栏上添加一个图标。几个小时以来,我一直在通过 Google 搜索我能想到的每一个可能的短语,但似乎什么都没有。 我知道使用 Apple SDK 是不可能的,
我想覆盖静音开关以在开关切换时创建一个新 Action 。那么当开关改变时触发的方法是什么? 谢谢 最佳答案 在 SpringBoard 中 Hook 这个方法 SBMediaController -
如果我没记错的话(如果我错了,请纠正我),未越狱的 iPhone 提供了两个广泛的存储空间: 适用于应用(以及与应用捆绑的数据); 用于用户管理的文件。 据我所知,前者是 protected 存储,这
我编写了一个将数据从一个 i-Device 传输到另一个 i-Device 的代码,但是由于 Apple 提供了官方解锁设备,我想扩展解决方案以将数据从 i-Device 传输到另一个基于平台的设备。
我的应用程序(越狱的 iOS)是否有一种优雅的方式( Objective-C 或 C)来检查特定的动态库在 iOS 中是否可用,而不是使用 NSFileManager 检查实际的 dylib 文件是否
是否可以使用 Objective-C 在越狱的 iOS 中以编程方式开始和结束调用?我知道使用非越狱设备是不可能的(尤其是调用结束),但我要求越狱版本。 最佳答案 开始通话使用 [[UIApplica
在越狱的 iOS 设备上,一个应用程序是否可以调用另一个应用程序的方法(实例方法,而不是静态方法)?另一种表达方式:如何获取应用程序的实例(假设应用程序正在运行)以便我可以调用它的方法之一? 背景:我
我很清楚使用私有(private) API 访问网络信息会导致您的应用被拒绝。 但是,假设我有一个越狱设备,是否可以通过编程在两个 WiFi 网络之间切换? 最佳答案 你将不得不使用 MobileAp
我正在开发一个简单的工具,请求设备从命令行解锁。但是,使用下面的这些代码,似乎没有发生任何事情(使用 Cycript 验证 sharedInstance 代码是否正确,并且设备确实收到了解锁请求) #
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwa
无法让我的 Javascript 正确显示我的 HTML 锁屏上的时间。 我一直在研究其他几个,他们没有使用 document.write() 而是使用 document.getElementById
我想模拟点击越狱 iPhone 主屏幕上的应用程序图标。我使用了下面的代码,但是无法生效。我做错了什么吗? getFrontMostAppPort() 的方法对吗?如果我尝试使用 GSSendSyst
如何在越狱的 iOS 6.x 设备上检索应用程序的作者(或开发者或发布者等)?在 iOS 4.x 和 5.x 中,SBApplication 类中有一个 author 成员。但是在 iOS 6.1 中
在iOS7之前,我使用UIGetScreenImage()函数来轻松截取屏幕截图,但在iOS7中,它已被弃用,现在有什么好的方法可以存档吗?谢谢! 补充:我需要在任意 View 截取整个屏幕 最佳答案
我有我的 iOS 应用程序(具有合法配置的标准应用程序)。它从网络获取有关电话号码的信息并显示给用户。应用程序可以与网络一起工作,有存储空间,而且非常聪明:)。 此外,我对 InCallService
我想以root身份运行应用程序 稍后,我通过一个间接脚本运行该应用程序,并使用 6755 权限设置运行该应用程序,该部分有效并运行该应用程序。 MyApp.app/MyApp MyApp.app/My
我正在为越狱的 iPhone 开发一个 iOS 应用程序。作为启动守护进程,它需要在手机启动时运行。所以这就是问题所在,下载包时,守护程序的 plist 已放置在/System/Library/Lau
有一个很好的开源库,它使用 Apple 的私有(private)框架将音频文件添加到越狱的 iOS 设备上的 iTunes 库中,libipodimport .它缺少的是在添加音乐文件时也可以添加艺术
我有问题。我需要为 越狱 iOS 解决这个问题。我的应用程序在后台模式下工作。我希望该应用程序在某些事件后从后台进入前台模式。我尝试了下一条指令: system([[NSString stringWi
我正在为越狱的 iPhone 构建一个守护程序应用程序,并遵循了 stackoverflow 上的几个问题和答案中描述的指南,当然还有 Chris Alvares 的网页 http://chrisal
我是一名优秀的程序员,十分优秀!