2010-03-10 5 views
26

자동화 테스트 (허드슨 사용)에는 Android OS 버전, 화면 해상도, 화면 밀도 및 언어의 다양한 조합 에뮬레이터를 생성하는 스크립트가 있습니다.
이 부분은 언어 부분을 제외하고 잘 동작합니다.자동으로 Android 에뮬레이터 로케일 변경

Android 시스템 로케일을 자동으로 변경하는 방법을 찾아야합니다. 다음은 우선 순위에 내가 생각할 수있는 몇 가지 방법은 다음과 같습니다

  • 추출/편집/어떤 종류의 실행 에뮬레이터
  • 을 시작하기 전에 직접 QEMU 이미지를 재 포장 시작 후 에뮬레이터에 APK를 시스템 로케일 변경
  • 설정 응용 프로그램을 열고 것입니다 시작
  • (에뮬레이터의 텔넷 인터페이스를 통해) 키 시퀀스를 실행 한 후 에뮬레이터에서 일부 SQLite는 DB에서 로케일 설정을 변경하기 시작
  • 후 에뮬레이터 파일 시스템에 로케일 설정을 변경 변화시키다 로케일
  • 수동으로 중 하나를 통해, 각 플랫폼 버전의 에뮬레이터를 시작하는 설정에서 손으로 로케일을 변경을 저장하고이 작업을 수행 할 수 있는지 여부를 나중에 배포

모든 아이디어에 대한 이미지를 보관 위의 방법이나 그렇지 않으면?

로캘 설정이 시스템에서 유지되거나 읽히는 위치를 알고 있습니까?


솔루션 : dtmilano에
감사 관련 속성에 대한 정보, 나의 부분에 약간의 추가 조사, 난 더 나은 간단 위의 모든 아이디어보다 해결책을왔다!

다음은 그의 답변을 세부 정보로 업데이트했습니다. 당신이 원하는

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

또는 어떤 로케일 : 개인적으로

+1

당신이 당신의 자동화 된 테스트가 설정 설명합니다 간행물 (블로그, 포럼 게시물 등)의 어떤 종류가 있습니까? 나는 내 애플 리케이션을위한 자동화 된 테스트를하고 싶다. 그리고 나는 허드슨을 좋아하지만, 지금까지이 주제에 대한 좋은 소개를 결코 발견하지 못했다. – Janusz

+0

내가 작업하고있는 몇 가지 추가 허드슨 관련 개선 사항과 함께 작성할 수도 있지만 아마도 몇 주 동안은 아닙니다. 내가한다면 여기에 업데이트를 게시 할 것입니다. –

+0

큰 감사드립니다 – Janusz

답변

54

나는 간단한 방법은 다른 응용 프로그램에 따라 다릅니다 에뮬레이터, 당신은 통합 테스트를 실행하지 않는 한 아마 깨끗한 인스턴스를 시작하고 ADB를 사용하여 로케일을 변경하는 것입니다 생각 설정. 은 또한 my answer in this thread을 확인, 알고 포트에서 에뮬레이터를 실행할 수 있습니다

$ adb shell 'getprop persist.sys.language' 

을 사용하여 변경 사항이 성공적으로 완료되었는지 확인합니다.

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

이 방법, 당신은 다음 모든 유형의 평범한 구식 에뮬레이터를 만드는 즉시를 사용하여 시작할 수 있습니다 : 에뮬레이터를 시작할 때 직접 을 시스템 속성을 설정할 수 있습니다


주 원하는 로케일 없이 먼저 에뮬레이터 이미지를 수정해야합니다.

이 로캘은 이후 에뮬레이터 실행을 위해 유지되지만 당연히 시작시 또는 런타임 중에 다시 변경할 수 있습니다.

+0

이것은 정말 흥미 롭습니다 그래서 나는 그것을 시험해 보러 갔다. 나는 G1과 HTC Hero의 ADB 셸을 통해 시험해 보았다. getprop을 아무 문제없이 사용할 수 있었고 정보를 되 찾을 수 있었다. 하지만 setprop을 사용하고 싶지만 아무 것도하지 않으면 실제로 변경된 것 같습니다. –

+2

우리는 에뮬레이터에 대해 말하고 있었지만 이것이 실제 장치에서 작동 할 수 있는지는 확실하지 않았습니다. –

+1

쿨 .. 나는 그 속성에 대해 몰랐거나'stop' /'start'. 나를 위해 일합니다. 내 HTC Hero에서 작업하거나, 적어도 행복하게 재부팅 한 것 (root로 실행할 때)을 "stop"및 "start"합니다. :) –

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.