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報錯而不能運行以上代碼。

 

  以上這些都是參考網友的一些文檔,自己通過實踐總結而來,若有錯誤或侵權行為,請速告之,謝謝!

    

    

    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM