2010-03-10 74 views
26

對於自動化測試(使用Hudson),我有一個腳本可以爲Android操作系統版本,屏幕分辨率,屏幕密度和語言的許多組合生成一堆模擬器。
這工作正常,除了語言部分。自動更改Android模擬器語言環境

我需要找到一種方法來自動更改Android系統區域設置。這裏有一些方法我能想到的,按優先順序:

  • 提取/編輯/直接啓動模擬器
  • 運行某種前重新包裝一個QEMU圖像系統語言環境變化的APK在啓動後模擬器
  • 啓動
  • 後更改仿真器上的文件系統區域設置啓動
  • 運行鍵序列(通過仿真器的遠程登錄界面),這將打開設置應用程序後在模擬器上改變一些的SQLite數據庫的區域設置改變現場
  • 手動開始爲每個平臺版本的模擬器,在設置手動更改區域,將其保存和歸檔圖像供以後部署

任何想法是否可以做到這一點,無論是通過以上方法或其他?

你知道系統持續/讀取區域設置的位置嗎?


解決方案:
由於dtmilano是關於相關屬性信息,並在我的部分一些進一步的調查,我想出了一個解決方案甚至比上述所有的想法更好更簡單!

我已經更新了他的答案,詳情如下。

+1

你有某種出版物(博客,論壇帖子等),在那裏你描述你的自動化測試設置的?我很樂意爲我的應用程序進行自動化測試,我喜歡哈德森,但直到現在,我從未找到有關此主題的良好介紹。 – Janusz 2010-03-18 10:59:58

+0

我有可能會將它寫出來,並且還有一些額外的與哈德森相關的改進功能,但可能不會持續幾周。如果我這樣做,我會在這裏發佈更新。 – 2010-03-18 17:47:46

+0

這將是非常感謝 – Janusz 2010-03-18 17:51:49

回答

54

我個人認爲,最簡單的方法是開始依賴於其他應用程序的仿真器,可能是一個乾淨的情況下,除非你正在運行集成測試,然後利用亞行更改語言環境:你想

$ adb shell ' 
setprop persist.sys.language en; 
setprop persist.sys.country GB; 
stop; 
sleep 5; 
start' 

或任何語言環境設置。 要驗證你的改變是成功的只是使用

$ adb shell 'getprop persist.sys.language' 

您可能還需要就知道端口上運行模擬器,檢查my answer in this thread


請注意,您也可以在啓動模擬器當設置系統屬性直接

emulator -avd my_avd -prop persist.sys.language=en -prop persist.sys.country=GB 

這樣,您就可以創建任何類型的普通老式模擬器,然後啓動它,可以立即使用您所選擇的語言環境,而不是首先必須對模擬器映像進行任何修改。

此語言環境將會保留以供將來運行的模擬器使用,當然您可以隨時在啓動時或運行時再次進行更改。

+0

這真的很有趣所以我去嘗試一下,我已經通過G1和HTC Hero上的ADB外殼嘗試過了,我可以使用getprop沒有問題並獲取信息。但是我想用setprop,但是當我什麼都不做的時候,似乎真的變了嗎? – 2010-03-10 18:12:52

+2

我們在談論仿真器,並不確定這是否可以在真實設備上工作。 – 2010-03-10 18:42:44

+1

很酷......我不知道那些屬性或「停止」/「開始」。適用於我。也在我的HTC Hero上工作,或者至少「停止」和「開始」愉快地重新啓動(以root身份運行時)。 :) – 2010-03-10 19:40:45

3

接受的答案不工作了。 persist.sys.languagepersist.sys.country已從模擬器屬性中消失。

我的解決方案是使用預安裝在android模擬器「自定義區域設置」應用程序。只需發送帶有額外的語言參數意圖將如下:

adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE EN 

這裏更多信息 - prepare android emulator for UI test automation.