안드로이드 에뮬레이터 로케일을 자동으로 변경합니다
-
19-09-2019 - |
문제
자동화 된 테스트 (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