最近不是特别忙闲来无事,研究一下,上网一看好的教程,但是都不是最新的,而且根据网上的教程坐下来根本就不行,直接上官网,成功。记录下来!!!
1.建立连接,是reveal和Xcode的模拟器建立连接方法有两种
第一种。(自己开发的是,使用此方法,团队开发的时候,这种方法要求每人都必须有reveal,团队开发时不太方便,静态的加载)。
(1.)打开reveal,打开你的Xcode工程
reveal - help -Show Reveal Library in Finder
(2将reveal.framework 加入工程
(3)Build Settings -Other Linker Flag - 添加 -ObjC -lz -framework Reveal
(4)如果是Xcode的7需要注意Framework Search Paths 应该有reveal的路径,例如FRAMEWORK_SEARCH_PATHS = $(inherited) "$(SYSTEM_APPS_DIR)/Reveal.app/Contents/SharedSupport/iOS-Libraries",如果没有添加
(5)运行工程,打开reveal 如果以上方法做的都对,就连接成功。可以选择模拟器了。
第二种方法(动态加载,不要在发布(release)构建中调用此方法,确保仅是在应用的调试(debug)构建中加载libReveal.dylib。)
步骤(1)相同
(2)将libreveal.dylib 加入工程
Add to targets对话框中,反选所有的target。这确保了Xcode不会在编译时连接动态库文件。可选步骤:选中Copy items if needed,将会把libReveal.dylib拷贝到工程中——如果您这么做了, 请记住,当更新Reveal至新版本时,也依照上述步骤再次更新此库文件。
(3)target- bulid phase - copy buldle resurces 添加 libreveal.dylib
添加依赖库
libz.tbd,CFNetwork.framework,QuartzCore.framework,CoreGraphics.framework
(4),动态加载库在调试器外部设备上运行的应用程序时,需要将libreveal.dylib作为构建过程的一部分。
代码
set -e
if [ -n "${CODE_SIGN_IDENTITY}" ]; then
codesign -fs "${CODE_SIGN_IDENTITY}" "${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}/libReveal.dylib"
fi
(5)添加相应的代码到你相应的类中(如UIapplicationdelegate),可以根据你的需要进行相应的修改
注意:此方法为动态连接第三方的库
需要引进动态连接的方法
包含
#include <dlfcn.h>
- (void)loadReveal
{
if (NSClassFromString(@"IBARevealLoader") == nil)
{
NSString *revealLibName = @"libReveal"; // or @"libReveal-tvOS" for tvOS targets
NSString *revealLibExtension = @"dylib";
NSString *error;
NSString *dyLibPath = [[NSBundle mainBundle] pathForResource:revealLibName ofType:revealLibExtension];
if (dyLibPath != nil)
{
NSLog(@"Loading dynamic library: %@", dyLibPath);
void *revealLib = dlopen([dyLibPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_NOW);
if (revealLib == NULL)
{
error = [NSString stringWithUTF8String:dlerror()];
}
}
else
{
error = @"File not found.";
}
if (error != nil)
{
NSString *message = [NSString stringWithFormat:@"%@.%@ failed to load with error: %@", revealLibName, revealLibExtension, error];
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Reveal library could not be loaded"
message:message
preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]];
[[[[[UIApplication sharedApplication] windows] firstObject] rootViewController] presentViewController:alert animated:YES completion:nil];
}
}
}
(6)一个简单的集成方式是,在-[UIApplicationDelegate applicationDidBecomeActive:]方法中调用上面声明的- (void)loadReveal方法,以确保Reveal库尽早地被加载进来。
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[self loadReveal];
}
reveal的删除
从您的Xcode项目中移除Reveal
根据您实际所选择的Reveal集成方式,请根据下述相关步骤来移除Reveal。
一旦库文件成功的移除后,下面的内容将不再会在您的应用启动时出现在Xcode控制台:
INFO: Reveal Server started (Protocol Version X).
静态连接
打开您的Xcode工程。 从Project Navigator中删除 Reveal.framework的引用。 在Xcode的Project Navigator中选中您的工程,对于每一个集成了Reveal得target,请选择Build Settings标签页,将下面内容从 Debug 配置中的 OtherLinked Flags设置中移除:
-framework Reveal -ObjC and -lz (删除前请确认此配置内容仅是用于Reveal)。 搞定 - 运行应用,确认Reveal没有和应用连接上。
动态连接
打开您的Xcode工程。 从 Project Navigator 中删除 libReveal.dylib的引用。 在Xcode的 Project Navigator中选中您的工程,对于每一个集成了Reveal得target,选择 Build Phases 标签页,如果下列库文件仅供Reveal使用的话,请将它们从 Link Binary With Libraries 配置中移除:
libz.dylib CFNetwork.framework QuartzCore.framework CoreGraphics.framework 将自定义的codesign内容从 Build Phases 下的 Run Script 中删除。 将 loadReveal / startReveal 方法从您的代码中删除。 搞定 - 运行应用,确认Reveal没有和应用连接上。
连接成功如下
reveal功能介绍
点击界面的其中一个图像
修改属性的时候,你甚至可以直观的在模拟器上看到结果,但是代码需要自己去Xcode中修改
回到主屏幕
好了简单的使用就是如此!!!