排毒代码是如何插入到应用程序包中的
Posted
技术标签:
【中文标题】排毒代码是如何插入到应用程序包中的【英文标题】:How is detox code inserted into the app bundle 【发布时间】:2018-09-01 20:19:03 【问题描述】:我使用 detox 在 react native 上运行 e2e 测试。
artcile 是一位从事排毒工作的人写的
灰盒本质上是使用了一段植入应用程序的代码,它可以帮助我们看到里面发生了什么。
我的问题是,这是怎么发生的?查看docs 用于detox build
的命令是
xcodebuild -project ios/YourProject.xcodeproj -scheme YourProject -sdk iphonesimulator -derivedDataPath ios/build
那里没有专门提到排毒。
此外,文档state here 认为构建命令是可选的,并且
您也可以选择不使用,自行提供编译好的应用。
好吧,我该怎么做?如何注入排毒/确保没有将排毒注入我的应用程序?如果我从我的 CI 服务器下载已编译的应用程序,它不能与 detox 一起使用(不足为奇,因为 detox 代码没有植入应用程序中)。但是如果我使用detox build
命令(它似乎只是运行配置中build
命令指定的任何内容),测试工作。似乎发生了一些新人无法理解的“魔法”。
谢谢。
【问题讨论】:
【参考方案1】:太神奇了!
嗯,实际上不是。构建步骤是完全可选的,并且如文档中所述,Detox 适用于任何有效的应用程序。
为了加载 Detox,我们告诉动态链接器使用 DYLD_INSERT_LIBRARIES
环境变量加载它。所以它只会在你从命令行运行detox test
时加载 Detox。
这在模拟器上很容易,因为它可以访问您的 Mac 的文件系统。一旦我们实现了对在实际硬件设备上进行测试的支持,我们仍将使用该环境变量,但我们必须将其直接注入您的 IPA 文件中。
【讨论】:
这意味着我不需要运行detox build
命令,我应该能够使用 CI 的输出。 CI 给了我一个 xcarchive 文件,其中包含一个 .app 文件(除其他外) - 你能确认 detox 应该与它一起工作吗(它不能开箱即用,所以看来我必须做一些调试,我只是想确定我是否走对了方向)。谢谢!
Xcarchive 通常是 arm64 架构,而模拟器是 x86_64。
只要您的 CI 可以使用 x86_64 架构(iphonesimulatoros SDK)构建 .app,就可以与 Detox 一起使用。如果我的回答已经回答了你的问题,请注明。以上是关于排毒代码是如何插入到应用程序包中的的主要内容,如果未能解决你的问题,请参考以下文章