Önceden oluşturulmuş ABI kullanım kontrol aracı

Android paylaşılan kitaplıkları zaman zaman değişir. Önceden oluşturulmuş ikili programları saklama ve hepsinin yüklenmesi büyük çaba gerektirir. Android'de 9 veya önceki sürümlerin yüklü olduğu, kaldırılan kitaplıklar veya ABI'ler yalnızca çalışma zamanında bağlanamaz. Geliştiriciler şunu yapmalıdır: eski ikili programları bulmak için günlükleri izleyin. Android'de 10 için sembol tabanlı bir ABI kullanım denetleyicisi kullanıma sunuldu. Denetleyici, derleme sırasında güncel olmayan önceden oluşturulmuş ikili programları algılayabilir. Böylece, paylaşılan kütüphane geliştiricileri, önceden oluşturulmuş ikili programlardan hangilerinin ve önceden oluşturulmuş ikili programların yeniden oluşturulması gerekir.

Sembole dayalı ABI kullanım kontrol aracı

Sembol temelli ABI kullanım denetleyicisi, ana bilgisayar. Denetleyici, önceden oluşturulmuş ikili programı ve tanımlanmamış tüm simgelerin çözülüp çözülmediğini kontrol eder.

İlk olarak denetleyici, önceden oluşturulmuş ikili programın hedef mimarisini kontrol eder. Önceden oluşturulmuş ikili program ARM, AArch64, x86 veya x86-64'ü hedeflemiyorsa mimarisi yoksa denetleyici önceden oluşturulmuş ikili programı atlar.

İkinci olarak, önceden oluşturulmuş ikili programın bağımlılıkları LOCAL_SHARED_LIBRARIES veya shared_libs. Derleme sistemi, modül adlarını eşleşen varyanta (ör. core - vendor) paylaşılan kitaplıklar arasından seçim yapın.

Üçüncüsü, denetleyici DT_NEEDED girişlerini LOCAL_SHARED_LIBRARIES veya shared_libs. Özellikle, denetleyici, paylaşılan her bir öğeden DT_SONAME girişini ayıklar kitaplıklar ve bu DT_SONAME, Önceden oluşturulmuş ikili programda DT_NEEDED giriş kaydedildi. Bir uyuşmazlığı durumunda bir hata mesajı alırsınız.

Dördüncü olarak denetleyici, önceden oluşturulmuş ikili programdaki tanımlanmamış sembolleri çözer. Tanımlanmamış bu simgeler bağımlılıkların birinde, simge bağlaması GLOBAL veya WEAK olmalıdır. Bir tanımlanmamış simge çözümlenemiyor, hata mesajı veriliyor.

Önceden oluşturulmuş modül özellikleri

Önceden oluşturulmuş ikili programın bağımlılıkları takip etmek için:

  • Android.bp: shared_libs: ["libc", "libdl", "libm"],
  • Android.mk: LOCAL_SHARED_LIBRARIES := libc libdl libm

Önceden oluşturulmuş ikili program, çözülmeyen tanımsız simgeler varsa aşağıdakilerden birini belirtin:

  • Android.bp: allow_undefined_symbols: true,
  • Android.mk: LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

Önceden oluşturulmuş ikili programın ELF dosya kontrolünü atlamasını sağlamak için takip etmek için:

  • Android.bp: check_elf_files: false,
  • Android.mk: LOCAL_CHECK_ELF_FILES := false

Denetleyiciyi çalıştırma

Denetleyiciyi çalıştırmak için ortam değişkenini ayarlayın CHECK_ELF_FILES - true ve koşu make check-elf-files:

CHECK_ELF_FILES=true make check-elf-files

Denetleyiciyi varsayılan olarak etkinleştirmek için PRODUCT_CHECK_ELF_FILES eklentisini ekleyin. - BoardConfig.mk:

PRODUCT_CHECK_ELF_FILES := true

Önceden oluşturulmuş öğeler, Android'in derleme işlemi sırasında otomatik olarak kontrol edilir:

make