经由链接的方式集成Reveal
链接Reveal的服务框架到你的iOS或者tvOS应用程序中,是一个让Reveal内省快速简单的方式。
警告:不要发布带有Reveal的产品。这篇文章介绍了使用build 配置的方法,所以不用考虑将debug和框架链接。
在你准备使用Reveal之前,需要准备下述步骤:
1、打开Reveal并且选中“”iOS Library”或者“tvOS Library”中的一项。从Help 菜单中选择 Show Reveal Library in Finder 。这将会打开一个窗口,里面包含相应的框架。
2、复制RevealServer.framework到你项目的根目录里,并且在拖拽framework时,按住Option。
提示:
把RevealServer.framework拷贝到你的项目中很重要。确保你在拖动这个文件的时候按住了option。否则的话Finder只会创建一个别名,而不是拷贝了一份文件。
这个阶段使用Finder也很必要。使用xcode的“Embedded Binaries”或者"Linked Frameworks & Libraries"设置说明构建说明我们将会在稍后的向导中进行订制。
你也可以把这个框架放到子目录里来管理这个目录,使得项目更加有序。另外在运行script时,确保环境配置的相应变化。
3、在Xcode中打开你的项目,然后在Xcode的导航栏上选中相应的项目。
4、在TARGETS列表中选中你想要在Reveal中检查UI的一项。
5、选中Build Settings,并且添加下列设置到“Framework Search Paths”的Debug设置下:
$(inherited) $(SRCROOT)
注:这里的文件路径一定要写对,否则会报linker的错误,找不到文件。
6、还是在“Build Settings”里,添加下列设置到Other Linker Flags的Debug设置下:
-ObjC -weak_framework RevealServer
7、还是在“Build Settings”里,添加下列设置到“Runpath Search Paths”的Debug设置下,如果这个设置没有;
$(inherited) @executable_path/Frameworks
8、在“Build Phases”,添加新的“Run Script”–命名为“Integrate Reveal Server”或者其他的合适的描述。并且粘贴下列shell script:
export REVEAL_SERVER_FILENAME="RevealServer.framework"
# Update this path to point to the location of RevealServer.framework in your project.
export REVEAL_SERVER_PATH="${SRCROOT}/${REVEAL_SERVER_FILENAME}"
# If configuration is not Debug, skip this script.
[ "${CONFIGURATION}" != "Debug" ] && exit 0
# If RevealServer.framework exists at the specified path, run code signing script.
if [ -d "${REVEAL_SERVER_PATH}" ]; then
"${REVEAL_SERVER_PATH}/Scripts/copy_and_codesign_revealserver.sh"
else
echo "Cannot find RevealServer.framework, so Reveal Server will not be started for your app."
fi
注意:如果你想保持RevealServer.framework这个框架也在别处(貌似就是在这个的项目的分支),跟着Script的注解更新REVEAL_SERVER_PATH的环境变量。
9、在Xcode中,用Debug模式编译和运行你的程序。如果你在真机上运行你的iOS或者tvOS,确保他们在运行Reveal的同一个Wifi网络环境,或者通过USB连接到你的Mac上。
如果一切正常运行,那么你可以切换到Reveal,并且会看见你的iOS或者tvOS程序会列在Reveal中。选中你的APP,并且核对下在模拟器中的或者真机上的页面是否和你在Reveal上看到的匹配。
10、运行你的程序,这次在Release的环境下。这样的变化将不能连接到你的应用程序。如果你仍然可以连接,检查下RevealServer.framework是不是 不在 “Build Phases”的“Link Binary With Libraries”中没有。
没有代码需要添加,也没有任何的头文件需要导入。这个框架将会在你的APP里自动的加载和在你需要Reveal services的时候开始工作。
另附:
Reveal的官方集成文档
和运行成功的效果图:
以上个人翻译,欢迎各位大神批评指正~