MonkeyRunner——如何在实体机上启动一个程序

  闲来无事,研究了下MonkeyRunner调试实体机。之前JDK,Python,SDK,MonkeyRunner环境都已配置完毕,这里就不一一详述了。

一)启动MonkeyRunner并连接设备:

  打开CMD进入到SDK安装目录中的tools,运行命令:“monkeyrunner” ,进入shell命令交互模式(若你环境变量配置好了,则不需进入tools目录)。然后导入所需模块,运行命令:

  from com.android.monkeyrunner import MonkeyRunner

  输入“MonkeyDevice”回车后,运行命令:

  device=MonkeyRunner.waitForConnection(”device id")

  设备就可以成功连接了(获取device id:在CMD 中运行命令“adb devices”就可以获取device id)。

 

二)安装并启动设备的应用程序:

  我们可以通过以下两个命令安装并启动设备的应用程序"

  device.installPackage(“xxx.apk”)

  device.startActivity(packageName/startActivity)

 

三)获取packageName和startActivity:

  接下的问题就是如何获取“packageName”和“startActivity”。 有源码的话,我们可以从源文件的AndroidManifest.xml中获得。没源码的话就相对麻烦些了。

  首先我们要在手机中配置SL4A并连接PC调试,这个暂时放在后面讲。我们先直接参考代码:

  1.获取packageName: 

    1 import android
    2 import pprint
    3 droid=android.Android()
    4 pacs=droid.getRunningPackages()
    5 pprint.pprint(pacs.result)

  这样就可以获取packageName列表了,找出与Apk对应的packageName即可。

  2.获取startActivity:

    1 import android
    2 import pprint
    3 droid=android.Android()
    4 apps=droid.getLaunchableApplications()
    5 pprint.pprint(apps.result)

  同样可以获取到startActivity列表,找出与之对应的即可。

 

四)安装配置SL4A:

  1. 设置环境变量:windows增加一个环境变量AP_PORT,其值为9999。ubuntu下执行export AP_PORT=9999即可。

  2. 访问SL4A的主页:http://code.google.com/p/android-scripting/下载最新的版本并安装在手机上。

  3. SL4A安装成功后,启动SL4A,Menu>View>Interpreters,如果之前没有安装过解释器,列表中应该只有Shell一项,点击Menu>Add,在显示出来的列表中会有可供选择安装的解释器,选择后会自动进入下载安装的过程,我们选择Python即可。

  4. 解释器安装成功后,在内存卡或手机内存中会生成“com.googlecode.pythonforandroid”文件夹,进入目录extras>python,将python目录下的android.py拷贝到PC的python安装目录下。

  5. 在手机上启动远程调试的端口:在SL4A的Preferences选项中,设置Server Port为一个未占用的,例如‘65000’ 。运行SL4A,Menu->View->Interpreters->Menu中选择Start Server即可,然后将手机端口映射到PC端口,代码如下:

  adb forward tcp:9999 tcp:65000

  所有步骤完成后我们来测试下SL4A是否配置正确,在CMD中启动Python,运行以下代码:

    1 import android
    2 droid = android.Android()
    3 droid.makeToast('Hello World')

 

  若返回结果为:Result(id=0, result=None, error=None),则SL4A配置正确。

  若运行以上代码报错:1.可能是端口的转发设置有问题。2.PC中的python不兼容所导致,本人就因为python33运行android.py报错而不能运行以上代码。

 

  以上这些都是参考网友的一些文档,自己通过实践总结而来,若有错误或侵权行为,请速告之,谢谢!

    

    

    

  

posted @ 2013-04-09 09:58  Dimdusk  阅读(3751)  评论(2编辑  收藏  举报