iOS(iPhone/iPad)上是否支持动态库?
在Xcode中,我尝试创建一个新项目 - > Framework&Library - > Cocoa Library(动态).在项目设置,我设置了基地SDK来iOS device 4.1和目标iOS4.1,但它有一个内置的错误:
target指定产品类型'com.apple.product-type.library.dynamic',但'iphonesimulator'平台没有这样的产品类型".
我选择的构建是模拟器 - >调试 - > i386.
我正在尝试为iOS创建一个动态库并在运行时加载它.在看了这个问题和这个答案之后,我一直在使用iOSOpenDev并在我的iPhone上部署所有内容.dylib的xCode项目名为KDylibTwo,我修改的文件是:
KDylibTwo.h
#import <Foundation/Foundation.h>
@interface KDylibTwo : NSObject
-(void)run;
@end
Run Code Online (Sandbox Code Playgroud)
KDylibTwo.m
#import "KDylibTwo.h"
@implementation KDylibTwo
-(id)init
{
if ((self = [super init]))
{
}
return self;
}
-(void)run{
NSLog(@"KDylibTwo loadded.");
}
@end
Run Code Online (Sandbox Code Playgroud)
为了测试我的库是否有效,在构建它以进行性能分析后(iOSOpenDev在iPhone上部署它的方式),我可以找到它存储在我的设备上/usr/lib/libKDylibTwo.dylib并构建一个调整(再次使用iOSOpenDev),按如下方式挂接SpringBoard:
#include <dlfcn.h>
%hook SBApplicationIcon
-(void)launch{
NSLog(@"\n\n\n\n\n\n\nSBHook For libKDylibTwo.dylib");
void* dylibLink = dlopen("/usr/lib/libKDylibTwo.dylib", RTLD_NOW);
if(dylibLink == NULL) {
NSLog(@"Loading failed.");
} else {
NSLog(@"Dylib loaded.");
void (*function)(void);
*(void **)(&function) = dlsym(dylibLink, "run");
if (function) {
NSLog(@"Function found.");
(*function)();
} else {
NSLog(@"Function …Run Code Online (Sandbox Code Playgroud)