手把手教你ranorex_android源码instrument

话说ranorex能把android程序看的透彻,关键是在潜伏,他使用instrumentation,在每个界面(activity)里面,准确的说是onresume,也就是页面显示的时候,都给安装了个钩子(hook),等到界面不显示了,也就是pause了,就去掉这个hook,所以ranorex才能对android程序的界面元素一清二楚。

 

好吧,我说说具体步骤:

 

 

 

instrumentation处理源文件:

1.      在源文件工程中引用:ranorex.jar,位置在:C:\安装目录\Ranorex 4.1\Bin\ RxEnv\Android\

 

001.png

 

 手把手教你ranorex_android源码instrument

 

2.      给所有的activity加上代码:

@Override

public void onResume()

{

 super.onResume();

 com.ranorex.android.RanorexAndroidAutomation.Hook(this);

}

 

@Override

public void onPause()

{

 super.onPause();

 com.ranorex.android.RanorexAndroidAutomation.UnHook(this);

}

 

@Override

public boolean dispatchKeyEvent(android.view.KeyEvent event)

{

 com.ranorex.android.RanorexAndroidAutomation.Key(event);

 return super.dispatchKeyEvent(event);

}

 

 

 

3.      添加权限

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.INJECT_EVENTS" />

 

002.png

 

 手把手教你ranorex_android源码instrument

这个意思是只有系统应用程序才可以使用这个权限,在程序中插入事件,绝对不是干好事的。^_^

不用搭理他,project-clean一下,报错就消失了,编译能通过的。

 

 

4.      添加版本号

帮助中说明:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

 package="YOUR PACKAGE"

 android:versionCode="YOUR CODE VERSION"

 android:versionName="YOUR VERSION NAME (RxInstrumented$<RANOREX-VERSION>)">

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.amem"

    android:versionCode="1"

    android:versionName="1.0" >

修改为:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.amem"

    android:versionCode="1"

    android:versionName="1.0(RxInstrumented$4.1.5)>" >

 

 

版本号查看方法:

003.png

 

 手把手教你ranorex_android源码instrument

 

好了,这就搞定了,编译成apk就可以用来测试了。

 

其实在deploy的时候,勾选上instrument就工具就自动帮你搞定了,是不是有点崩溃,这篇文章白看了。^_^

手把手教你ranorex_android源码instrument

原文:http://www.cnblogs.com/android100/p/android-instrument.html

上一篇:微信小程序如何访问带有Token安全认证的API


下一篇:使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 基础