Winscope izleme, Android çerçevesinin bir parçasıdır. Bu sayfada, Winscope izleme görüntüleyicisini yerel olarak indirmek, oluşturmak ve çalıştırmak için gereken adımlar özetlenmektedir.
Winscope'u yerel olarak derleme
Bilgisayarınızı Winscope izleyiciyi çalıştıracak şekilde ayarlamak için aşağıdaki adımları uygulayın:
- Android kaynağını indirin.
Winscope klasörüne gidin:
cd development/tools/winscopeBağımlılıkları yüklemek için:
npm installKullanılabilir komutların listesini görmek için şu komutu çalıştırın:
npm runAşağıdakileri kullanarak tüm üretim ve test hedeflerini oluşturun:
npm run build:prodWinscope'u çalıştırmak için:
npm run start
Ayrı parçalar oluşturma
Aşağıdaki komutları kullanarak Winscope'un bağımsız bölümlerini ayrı ayrı oluşturabilirsiniz:
| Komut | Açıklama |
|---|---|
build:trace_processor |
Perfetto'nun trace_processor en son sürümünü kontrol edip yeniden oluşturur. |
build:protos |
Proto tanımlarını yeniden derler. |
Testler yapma
Winscope, birim ve uçtan uca testleri içerir. Bu komutları çalıştırmak için npm run
<command> kullanın:
| Komut | Açıklama |
|---|---|
test:unit:ci |
CI veya göndermeden önce kancası için birim testlerini daha az ayrıntılı bir biçimde çalıştırır. |
test:unit:dev |
Yerel geliştirme için birim testlerini daha ayrıntılı bir biçimde çalıştırır. Bu mod, değişiklikleri izler ve doğru testleri otomatik olarak yeniden çalıştırır. |
test:e2e |
Araçlar arası protokol gibi uçtan uca testleri çalıştırır. |
test:presubmit:quiet |
CI veya presubmit kancası için tüm presubmit birim testlerini, linters'ları ve grafik analizlerini daha az ayrıntılı bir biçimde oluşturur. |
test:presubmit |
Yerel geliştirme için tüm gönderme öncesi birim testlerini, linters'ları ve grafik analizini daha ayrıntılı bir biçimde oluşturur. |
test:all |
Yerel geliştirme için tüm testleri (birim ve uçtan uca), linters ve grafik analizini daha ayrıntılı bir biçimde çalıştırır. |
Uçtan uca testler
Uçtan uca testleri çalıştırmadan önce uzaktan aracı başlatmanız ve Chrome sürücüsünün doğru sürümünü yüklemeniz gerekir. Aşağıdaki kod snippet'inde run test:e2e komutu, Chrome sürücüsünü otomatik olarak yükler.
$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e
Aşağıdaki tabloda gerekli komutlar ve açıklamaları listelenmiştir. Bunları çalıştırmak için npm run command kullanın:
| Komut | Açıklama |
|---|---|
start:remote_tool_mock |
Araçlar arası protokolü test etmek için uzaktan araç taklidini başlatır. |
install:chromedriver |
Uçtan uca testleri çalıştırmak için gerekli olan Chrome sürücüsünü yükler. |
@IntDef eşlemesini güncelleme
@IntDef, bir tam sayının olası değerlerini kısıtlamak için Android'de kullanılan bir ek açıklamadır. Winscope, tam sayı yerine değerin adını göstermek için bu notların eşlemesini kullanır.
Android çerçevesine yeni @IntDef değerleri eklenir ancak Winscope'ta güncellenmezse bu değerler açıklayıcı dizeler yerine ham tam sayı değerleri olarak gösterilir. Bu sorunu düzeltmek için IntDef eşleme dosyasını (development/tools/winscope/src/common/intDefMapping.json) güncelleyin.
@IntDef eşlemesini otomatik olarak güncellemek için aşağıdakileri yapın:
update_intdef_mappings.shkomut dosyasını yerel Android ağacınızdakidevelopment/tools/winscope/scripts/dizininden çalıştırın. Bu komut dosyası, koddan en son@IntDefdeğerlerini çıkaran veintDefMapping.jsondeğerlerini güncelleyen açıklama sürecini tetikler:cd development/tools/winscope ./scripts/update_intdef_mappings.shsrc/common/intDefMapping.jsonkomutunu kullanarak değişikliklerigit commit'e işleyin verepo uploadkomutunu kullanarak yükleyin.
Komut dosyası kullanılamıyorsa @IntDef eşlemeyi Android kök dizininizden ($ANDROID_BUILD_TOP) manuel olarak güncellemek için aşağıdaki adımları uygulayın:
Ek açıklama ön işlemcisinin çalışması için
framework-minus-apex-intdefsoluşturun:m framework-minus-apex-intdefsOluşturulan
intDefMapping.jsondosyasını önceden oluşturulmuş öğeler deposuna kopyalayın:$ python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./development/tools/winscope/src/common/intDefMapping.jsonrepo uploadkullanarak Winscope'taki değişiklikleri yükleyin.
Diğer komutlar
Winscope komut dosyaları, derleme ve testlere ek olarak tabloda gösterildiği gibi başka özellikler de içerir. Bu komutları çalıştırmak için npm run command kullanın:
| Komut | Açıklama |
|---|---|
format:check |
prettier kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder. |
format:fix |
prettier kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir. |
eslint:check |
eslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder. |
eslint:fix |
eslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir. |
tslint:check |
tslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder. |
tslint:fix |
tslint kullanarak kod biçimlendirmeyle ilgili sorunları kontrol eder ve otomatik olarak düzeltir. |
deps_graph:check_cycles |
Döngüsel bağımlılıklar için kodu analiz eder. |
Sorunu giderin
Sorun giderme için aşağıdaki ipuçlarını kullanın:
Hata
ProtocolError: missing required '<FIELD>'veyaTypeError: Cannot read property '<PROP>' of nullBu durum, izleme dosyası yeni gerekli alanlar içeren yeni bir proto tanımıyla oluşturulduğunda meydana gelir.
- İzi doğru Winscope sürümünde (master, S veya R) açtığınızdan emin olun.
Yeni alanı proto üzerinde oluşturursanız
npm run build:protoskullanarak Winscope'taki proto'ları yeniden derleyin.
Yüklenen bazı bağımlılık sürümleri yanlış (derleme başarısız oluyor)
package.jsonvepackage-lock.jsonhizmetlerinde yapılan değişiklikleri geri alın. Kaldır'ınode_modulestıklayın.npm installkomutunu tekrar çalıştırın.
Proto dosyalarından birine yeni bir alan ekledim. Nasıl gösterilir?
- Winscope, derlendiği zamandaki proto tanımlarını kullandığından yeni alanlar varsayılan olarak görünmez. Yeni alanları göstermek için
npm run build:protoskullanarak proto'ları yeniden oluşturun.
- Winscope, derlendiği zamandaki proto tanımlarını kullandığından yeni alanlar varsayılan olarak görünmez. Yeni alanları göstermek için