閑來無事,研究了下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報錯而不能運行以上代碼。
以上這些都是參考網友的一些文檔,自己通過實踐總結而來,若有錯誤或侵權行為,請速告之,謝謝!
