【问题标题】:How does Monkey talk agents work without source code modification in the appMonkey talk 代理如何在不修改应用程序源代码的情况下工作
【发布时间】:2013-11-21 12:17:06
【问题描述】:
当我们为 android 或 ios 应用程序安装代理时,我们通常会添加一些库并更改一些配置设置。仅添加一个库如何使该应用程序记录事件并将其推送到monkey talk IDE。
通常我们在项目中添加一个库的时候,如果需要使用它,我们必须先导入它,然后在代码中使用它。但是这个代理是如何在不修改源代码的情况下完成所有工作的呢?
【问题讨论】:
标签:
android
testing
mobile
monkeytalk
fonemonkey
【解决方案1】:
Monkey talk 库正在使用 AOP 和 aspectJ 组合来获取当前任务,这就是他们添加 <uses-permission android:name="android.permission.GET_TASKS" /> 权限的原因。现在使用此权限,他们可以访问应用程序当前的 Activity 及其视图。因此,他们每次更改当前视图时都会对其进行解析。并为这些视图添加新的监听器。
有关更多信息,您可以下载并研究其代码是开源的。
【解决方案2】:
neeraj t 是正确的:在 Android 中,MonkeyTalk 代码由 AspectJ 方面调用 - 一些代码被“编织”到应用程序中并在调用 cerain 方法时被调用。
在 iOS 中,MonkeyTalk 是静态初始化的,通过使用“-all_load”链接器标志强制执行。
【解决方案3】:
简单的答案是否定的,FoneMonkey 必须编译到被测应用程序中才能工作。所以是的,有人必须有权访问应用程序源。但是一旦 FoneMonkey 被编译到应用程序中,您就不再需要源代码了,您可以将 APK 交给 QA
Ref - Source