문제

자동화 된 테스트 (Hudson 사용)의 경우 Android OS 버전, 화면 해상도, 화면 밀도 및 언어의 많은 조합에 대한 에뮬레이터를 생성하는 스크립트가 있습니다.
이것은 언어 부분을 제외하고는 잘 작동합니다.

Android 시스템 로케일을 자동으로 변경하는 방법을 찾아야합니다. 선호하는 순서대로 생각할 수있는 몇 가지 접근 방식이 있습니다.

  • 에뮬레이터를 시작하기 직전에 QEMU 이미지 추출/편집/재 포장
  • 시작 후 에뮬레이터에서 일종의 시스템-로케일 변경 APK를 실행
  • 시작 후 에뮬레이터 파일 시스템에서 로케일 설정 변경
  • 시작 후 에뮬레이터의 일부 SQLITE DB에서 로케일 설정 변경
  • 설정 앱을 열고 로케일을 변경하는 에뮬레이터의 텔넷 인터페이스를 통해 키 시퀀스를 실행
  • 수동으로 각 플랫폼 버전의 에뮬레이터 시작, 설정에서 손으로 로케일 변경, 저장 및 나중에 배포를위한 이미지를 보관합니다.

위의 방법을 통해 또는 다른 방법으로 수행 할 수 있는지 여부는 어떤 아이디어입니까?

시스템에서 로케일 설정이 어디에 지속/읽는 지 알고 있습니까?


해결책:
관련 속성에 대한 Dtmilano의 정보와 내 입문에 대한 추가 조사 덕분에 위의 모든 아이디어보다 솔루션이 더 좋고 간단 해졌습니다!

아래의 답변을 세부 사항으로 업데이트했습니다.

도움이 되었습니까?

해결책

개인적으로 가장 간단한 방법은 에뮬레이터를 시작하는 것입니다. 다른 응용 프로그램에 의존하는 통합 테스트를 실행 한 다음 ADB를 사용하여 로케일을 변경하지 않는 한 깨끗한 인스턴스 일 것입니다.

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

또는 어떤 로케일을 설정하고 싶은지. 귀하의 변경이 성공적 이었는지 확인하려면 사용 만 사용하십시오

$ adb shell 'getprop persist.sys.language'

당신은 또한 포트에서 에뮬레이터를 실행하고 싶을 수도 있습니다. 이 스레드에서 내 대답.


시스템 속성을 직접 설정할 수도 있습니다 에뮬레이터를 시작할 때:

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

이렇게하면 모든 유형의 평범한 오래된 에뮬레이터를 만들고 원하는 로케일을 사용하여 즉시 시작할 수 있습니다. 없이 먼저 에뮬레이터 이미지를 수정해야합니다.

이 로케일은 향후 에뮬레이터를 실행할 수 있지만, 시작 또는 런타임 중에 언제든지 다시 변경할 수 있습니다.

다른 팁

수락 된 답변은 더 이상 작동하지 않습니다. persist.sys.language 그리고 persist.sys.country 에뮬레이터 특성에서 사라졌습니다.

내 솔루션은 Android 에뮬레이터 "Custom Locale"응용 프로그램에서 사전 설치된 것을 사용하는 것입니다. 다음과 같이 추가 언어 매개 변수를 사용하여 의도를 보내십시오.

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

자세한 내용은 여기 - UI 테스트 자동화를 위해 안드로이드 에뮬레이터를 준비하십시오.

업데이트 : Jonas Alves의 의견을 바탕으로 다음 명령은 API 28+에서 작동합니다.

adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE "en_US" com.android.customlocale2
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top