Winscope'u çalıştırma

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:

  1. Android kaynağını indirin.
  2. Winscope klasörüne gidin:

    cd development/tools/winscope
    
  3. Bağımlılıkları yüklemek için:

    npm install
    

    Kullanılabilir komutların listesini görmek için şu komutu çalıştırın: npm run

  4. Aşağıdakileri kullanarak tüm üretim ve test hedeflerini oluşturun:

    npm run build:prod
    
  5. Winscope'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ü kullanır ve yeniden oluşturur.
build:protos Proto tanımlarını yeniden derler.

Testler yapın

Winscope, birim ve uçtan uca testleri içerir. Bunları çalıştırmak için npm run <command> kullanın:

Komut Açıklama
test:unit:ci CI
veya göndermeden önce çalıştırma kancası için birim testlerini daha az ayrıntılı bir biçimde çalıştırır.
test:unit:dev Birim testlerini
yerel geliştirme için 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 göndermeden önce kancası için tüm göndermeden önce birim testlerini, linters'ı ve grafik analizini 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 bir eşlemesini kullanır.

@IntDef eşlemesini güncellemek için aşağıdakileri yapın:

  1. Ek açıklama ön işlemcisinin çalışması için :framework-minus-apex-intdefs oluşturun:

    mp :framework-minus-apex-intdefs
    
  2. Oluşturulan intDefMapping.json dosyası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.json
    
  3. repo upload kullanarak Winscope'taki değişiklikleri yükleyin.

Diğer komutlar

Winscope komut dosyaları, derleme ve testlerin yanı sıra tabloda gösterildiği gibi başka özellikler de içerir. Bunları ç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>' veya TypeError: Cannot read property '<PROP>' of null

    • Bu durum, izleme dosyası yeni zorunlu alanlar içeren yeni bir proto tanımıyla oluşturulduğunda meydana gelir.

      1. İzi doğru Winscope sürümünde (master, S veya R) açtığınızdan emin olun.
      2. Yeni alanı proto üzerinde oluşturursanız npm run build:protos kullanarak Winscope'taki proto'ları yeniden derleyin.

  • Yüklenen bazı bağımlılık sürümleri yanlış (derleme başarısız oluyor)

    • package.json ve package-lock.json hizmetlerinde yapılan değişiklikleri geri alın. node_modules öğesini kaldırın. npm install komutunu tekrar çalıştırın.
  • Proto dosyalarından birine yeni bir alan ekledim. Bu bilgiyi nasıl gösterebilirim?

    • 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:protos kullanarak proto'ları yeniden oluşturun.