2010-03-10 23 views
26

Otomatik test için (Hudson kullanarak) Android OS sürümünün, ekran çözünürlüğünün, ekran yoğunluğunun ve dilin birçok kombinasyonu için bir grup emülatör oluşturan bir komut dosyası var.
Bu, dil bölümü hariç, iyi çalışır.Android emülatör mahalini otomatik olarak değiştirme

Android sistem yerel ayarını otomatik olarak değiştirmenin bir yolunu bulmalıyım. İşte tercih sırasına göre Aklıma bazı yaklaşımlar, var:

  • ayıklanıyor/düzenleme/çeşit Koşu emülatör
  • başlamadan önce doğrudan QEMU imajını yeniden ambalajlama başlatıldıktan sonra emülatörünüzde APK sistem yerel ayarı değiştiren
  • ayarlar uygulamasını açın ve olacağını başlangıçta
  • (öykünücüsü'nın telnet arayüzü üzerinden) bir tuş dizisi Running sonra emülatörünüzde bazı SQLite veritabanında yerel ayarları değiştirme başlangıçta
  • sonra emülatör dosya sistemi üzerinde yerel ayarları değiştirme değiştir yerel
  • Manuel ya aracılığıyla, her platformu versiyonu için emülatörü başlayan ayarlarında elle yerel ayarını değiştirerek, kaydetmeden ve bu yapılabilir olup olmadığı sonradan dağıtım

Herhangi bir fikir için görüntüler arşivleme yöntemleri veya başka türlü?

Yerel ayarların sistem tarafından nasıl okuntığını/okuduğunu biliyor musunuz?


Çözüm: dtmilano için
sayesinde ilgili özellikleri hakkında bilgiler ve benim açımdan bazı daha fazla araştırma var, ben daha iyi ve daha basit yukarıda tüm fikirler daha çözüm geldi!

Aşağıdaki cevabını ayrıntılarıyla güncelledim. İstediğiniz

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

veya ne olursa olsun yerel: Şahsen

+1

size otomatik test kurmak açıklar yayında (blog, forum sonrası vs) çeşit var mı? Uygulamalarım için otomatik test yapmayı çok isterim ve hudson'u çok severim ancak şu ana kadar bu konuya ilişkin iyi bir tanıtım bulamadım. – Janusz

+0

Üzerinde çalışıyorum, Hudson ile ilgili bazı ek geliştirmelerle birlikte yazabileceğim bir olasılık var, ama muhtemelen birkaç hafta için değil. Eğer yaparsam, burada bir güncelleme gönderirim. –

+0

Bu harika olurdu – Janusz

cevap

54

Ben basit yolu diğer uygulamalar bağlıdır emülatörü, sen entegrasyon testleri çalıştıran sürece muhtemelen temiz bir örneğini başlatmak ve daha sonra adb kullanarak yerel ayarı olduğunu düşünüyorum kurmak. sadece Ayrıca my answer in this thread kontrol biliyorum bağlantı noktalarında emülatörlerini yayınlamak isteyebilir

$ adb shell 'getprop persist.sys.language' 

kullanan değiştirme işleminin başarılı olduğunu doğrulamak için.

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

Bu şekilde, daha sonra herhangi bir türde bir düz eski emülatör oluşturduktan hemen kullanarak o kadar başlatabilirsiniz: emülatör başlatırken doğrudan da sistem özelliklerini ayarlayabilirsiniz


Not Seçtiğiniz yerel ayar, ilk olarak olmadan, emülatör resimlerinde herhangi bir değişiklik yapmak zorunda.

Bu yerel ayar, öykünücünün gelecekteki işlemlerini sürdürmeye devam edecektir, ancak elbette, yeniden başlatma sırasında veya çalışma zamanında her zaman yeniden değiştirebilirsiniz.

+0

Bu gerçekten ilginç Ben de denemek için gittim, bir G1 ve bir HTC Hero üzerinde ADB kabuk ile denedim, getprop hiçbir sorun ve geri bilgi alabilirsiniz. Ama ben setprop kullanmak istiyorum ama hiçbir şey yapmadığımda aslında değişmiş gibi görünüyor? –

+2

Emülatörler hakkında konuşuyorduk, bunun gerçek bir cihaz üzerinde çalışıp çalışmadığından emin değiliz. –

+1

Harika .. Bu özellikleri bilmiyordum ya da 'dur'/'başlat '. Benim için çalışıyor. Ayrıca, HTC Hero'mda ya da en azından 'dur' ve 'start' şeyleri yeniden çalıştırarak (root olarak çalıştırıldığında) yeniden çalıştı. :) –

3

Kabul edilen yanıt artık çalışmıyor. persist.sys.language ve persist.sys.country, emülatör özelliklerinden kaldırılmıştır.

Benim çözüm önceden yüklenmiş android emulator "Custom locale" uygulamasını kullanmaktır. Basitçe aşağıdaki gibi kendisine ekstra dil parametresi ile niyet gönderin: Burada

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

fazla bilgi - prepare android emulator for UI test automation.

İlgili konular