Android P'nin yeni özelliklerinin sistem perspektifinden yorumlanması

Giriş

Google, 8 Mart 2018'de Android P'nin önizleme sürümünü yayınladı. Bu yılın üçüncü çeyreğinde son sürüm sürümünün yayınlanması bekleniyor. Geliştiricinin bakış açısından Android P'nin yeni özelliklerini tanıtan birçok makale var. Sürüm değişmiş görünmüyor. Daha sonra Android P'deki değişiklikleri Treble, System, Framework, Runtime, Security vb. Yönlerinden yorumlayacağım.

Tiz planı

Treble planı, sistem düzeyinde büyük etkisi olan çok önemli bir değişikliktir. Google, Android'in ana sürümünü her yayınladığında, üreticiye ve APP'ye uyum sağlama süreci uzun bir süreçtir. Her ana sürüme adapte olması zor olan üreticiler, çeşitli uyumluluk sorunlarını en iyi şekilde anlayabilirler. Tıpkı geçen yıl piyasaya sürülen Android O gibi, Android O modellerinin mevcut kullanıcı sayısı nispeten az ve uygulamalar targetSdk'yi O'ya uyarlamak için hızlı bir şekilde takip edemedi. Android P tekrar geliyor ve Android sisteminin parçalanması her zaman bir acı noktası oldu. Planın temel amacı, sistemi donanımdan ayırmak ve sistem yükseltmesini hızlandırmaktır. Treble, Android O ile başladı ve Android P tarafından daha da geliştirildi.

Ardından, Tiz'in tüm Android sistemindeki konumuna bir göz atın.

  • Ürün: OEM ile ilgili özelleştirme, özellikle Uygulamalar, ürün sysprops vb. Dahil.
  • Sistem: Android sisteminin Çerçevesi ve Daemonları
  • Tiz Arayüzü: Tiz arayüzü
  • Satıcı: Donanımla ilgili
  • ODM: VINTF desteği gibi ODM ile ilgili özelleştirme

Tiz Arayüzünün orta bileşeni, Android O: C ++ bağımlılığı (VNDK kullanarak), IPC çağrısı (HIDL kullanarak), SELinux, genel Kernel arayüzü, Android Doğrulanmış Önyükleme (AVB); Android P'ye yeni arayüz: Java bağımlılığı (Sistem SDK kullanarak), Sistem Özellikleri. Tiz planının, Android'in büyük sürümünün hızlı bir şekilde yükseltilebilmesini sağlamak için temel Satıcı'nın eski sürümünü kullanmak ve Sistem katmanının yeni sürüme yükseltilmesini desteklemek olduğu şekilden görülebilir.

Burada Sistem Özelliği uyumluluğunun Treble için çok kötü olduğu belirtilmelidir.Tizin ayrılması ve ayrılmasına ters çalışan kararsız kanallar aracılığıyla platform ve Satıcı arasında süreçler arası iletişime izin verir.

Bu amaçla, üçlü mülkleri platforma ve satıcıya ayırmayı planlıyor. Platform işlemi yalnızca düz platform özniteliğine erişebilir ve satıcı işlemi yalnızca satıcı özniteliğine erişebilir.Tabii ki, platform özniteliğinin satıcı sürecine maruz kalmasına izin verilir.

  • Platform tarafından sunulan tüm özellikler system / sepolicy / public / property_contexts konumunda bulunur ve Satıcı diğer platform özelliklerine erişemez;
  • Satıcı başlangıç komut dosyalarında kullanılabilen tüm özellikler system / core / init / stable_properties.h'de bulunur.Satıcı init betikleri diğer platform özelliklerini şu şekilde kullanamaz:
  • eylem tetikleyicileri.
  • Satıcı veya ODM özellikleri, vendor., Ro.vendor, persist.vendor, vb. Gibi kendi ad alanlarına sahip olmalıdır.
  • Satıcı girişi, yalnızca satıcıyla ilgili izinlerin kullanıldığından ve yalnızca sistem özniteliklerine erişilemediğinden emin olmak için vendor_init etki alanı adını kullanır
  • VINTF (Satıcı Arayüzü), donanımdan bağımsız (Çerçeve) ve donanımla ilgili parçalara ayrılmıştır. Sistem mimarisini daha fazla standartlaştırmak için, CKI (Common Kernel Interface), ortak sistem aynasının güvenmesi gereken bir dizi çekirdek arabirimi olarak tanımlanır ve Kernel dalı da etkili bir şekilde düzenlenir.

    VTS, HAL, Kernel ve VNDK'nın güvenilirliğini test edecek ve CTS ortak sistem arayüzlerini ve çerçeve özelliklerini test edecektir. Android O'dan beri zorunludur ve CTS / VTS, sistem ayırma uyarlaması için bir garanti sağlayacaktır.

    Tiz bağlamında Satıcı, yonga üzerindeki sistemin HAL katmanını ve çevre birimlerini ifade eder ve donanıma bağlı olmayan yazılım Satıcıya ait değildir; VNDK, HAL katmanını uygulamak için Satıcı tarafından sağlanan sistem kitaplığını ifade eder.

    • Platform ve Satıcı inşaatı birbirinden izole edilmiştir.
    • platform lib, system.img'ye karşılık gelir
    • vendor lib, vendor.img'ye karşılık gelir
    • Çoğu durumda, Satıcı kitaplığı ve sistem çekirdeği birbirini kullanamaz; Satıcı kitaplığı, dlopen özel sistem kitaplıklarına izin vermez
    • Ortakların ürünleri için VNDK'ya kitap eklemelerine izin verilmez, yalnızca AOSP'ye katkıda bulunabilirler

    Tüm bunlar, sistem kitaplığı ile Satıcı kitaplığı arasındaki ayrıştırma içindir. Bu çözüm Android P'de benimsenirse, Android Q'nun bir sonraki ana sürümü güncellenecektir. Android'in yeni bir sürümünü oluşturmak için yeni Sistem Q'yu doğrudan eski Satıcı P'ye ekleyebilirsiniz. .

    Bunlar arasında, VNDK + Framework kitaplıkları system.img biçimindedir ve Satıcı kitaplıkları vendor.img biçimindedir.

    Android P yeni eklenen ad alanı ad alanı:

    • Sistem ad alanı / sistem / lib /;
    • Satıcı ad alanları / system / lib / vndk, / system / lib / vndk-sp, / vendor / lib / vndk, / vendor / lib / vndk-sp şeklindedir

    Sistem

    1. Depolama performansı iyileştirmesi

    FDE, Android 6.0 için kullanılır, FBE, Android 7.0 için kullanılır ve daha iyi kullanıcı deneyimi ve gizlilik güvenliği sağlamak için iki DE ve CE dizini oluşturulur. FDE yakında tamamen kaldırılacaktır.

    Ek olarak, gelecekte daha hızlı şifreleme algoritmaları olacak.

    Dosya sistemi

    Dosya sistemi kotaları Android 8.0'dan desteklenir ve üç ana hedef

    • Ayarları açtığınızda, depolama kullanımını hızla hesaplayabilir ve daha iyi bir kullanıcı deneyimi sağlayabilir.
    • Uygulamaların kötüye kullanımını kontrol etmek için kotalar aracılığıyla daha hızlı ve daha adil önbellek yönetimi
    • Uygulamanın depolama alanını kötüye kullanımını sınırlamak için kotaları kullanın

    Adil önbellek stratejisi:

    • Her Uygulamaya önbellek kotaları atayın (kullanım sıklığına bağlı olarak), yeterli boş alan olana kadar önbelleğe alınan en eski dosyaları silin;
    • En iyi uygulama: Sistemin önbelleğe alınmış dosyaları silme fırsatına sahip olduğundan emin olmak için düzenli olarak yeni yöntemler arayın.PackageInstaller, DownloadManager ve DocumentsUI'yi takip edebilirsiniz.
    • Uygulama kötüye kullanımını sınırlayın:
    • Cihazın kötü amaçlı uygulamayı kaldırması veya büyük dosyaları silmesi gerekir
    • Cihazın döngüsel yeniden başlatma sürecinde takılıp kalmasını önleyin
    • Uygulamaların% 90 blok veya% 50 inode kullanmasını önleyin
    • exFAT: Google'ın ilgili güncellemeleri destekleyecek kaynağı yoktur, yalnızca kısmi yamalar;
    • vold: fw ile iletişim yöntemi, performansı artırmak için soketten bağlayıcıya ayarlanır; bu, yükleyicinin yuvadan bağlayıcı modülüne değiştirilmesinden sonraki ikinci zamandır;
    • TRIM: Bu işlem f2fs GC işlemini çalıştıracak ve gecenin boş zamanlarında yürütülmesi planlanacaktır;
    • SİGORTA: sdcardfs kullanılarak silindi, gelecekte daha fazla optimizasyon için esdf'ler olacak
    • Daha hızlı dosya kopyalama: Saf kullanıcı alanı gibi FileUtils.copy% 35 ~ 50 daha hızlıdır
    • FDE, FUSE, ASEC'ler silindi.

    2. Çekirdeğin kısa açıklaması

    • W'nin özelliği Kernel 3.18 veya sonrasına bağlı olacaktır, 3.10 artık korunmayacaktır. Ek olarak, Kernel 4.14 AOSP'ye aktarıldı;
    • ION: libion, Android P'de yeni çekirdek iyon arayüzünü zaten destekliyor. Doğrudan ion ioctl kullanmak yerine libion kullanılması şiddetle tavsiye edilir.
    • kernel + clang: clang 5.0 veya üstünü kullanmanız şiddetle tavsiye edilir.Hata mesajları doğru konumlandırma sağlar, bellek tüketimi ve derleme hızı hızlıdır, ancak gcc'nin bazı geçmiş sorunları vardır.
    • sdcardfs: Android O'nun varsayılan dosya sistemi, ro.sys.sdcardfs = 1, Android O'daki varsayılan dosya sistemi sdcardfs'dir, ancak kapatılmasına ve FUSE'ye geri dönmesine izin verilir. Android P, FUSE'yi doğrudan silmeyi planlıyor ve yakında bir sdcardfs sürümünü güncelleyecektir. Dosya sistemleri için, sdcardfs kullanılmasa bile, kullanıcı alanı yerine çekirdek tabanlı bir dosya sistemi kullanılması şiddetle tavsiye edilir.

    3. LMKD ayarı

    Çekirdek tabanlı LMK'nın dezavantajları:

    • Bellek sıkılığına göre ayarlama yapmak yerine sabit kodlu kalan bellek sınırına güvenin;
    • Üreticiler daha özeldir, bu da orijinal tasarımın nispeten katı olduğu, politika özelleştirmesini artırmak için uygun olmadığı ve süreci sonlandıracak bir grup yöntemi olmadığı anlamına gelir.
    • Döşeme küçültme API'sinde yer alan Shrinkers, bellek tarama sürecini yavaşlatmaktan kaçınmak için önbellek kullanmadan hızla düşmeli ve çıkmalıdır.
    • Ama aslında lmk tarafından gerçekleştirilen iş yükü, hedef süreçleri aramayı ve onları öldürmeyi içerir.Bu süreç hızlı bir eylem değildir.
    • Önemli süreçleri öldürmek mümkündür, ancak önemli olmayan süreçler öldürülmez
    • Lmk 4.12 numaralı kernel'den kaldırılacaktır;

    Alternatif: kullanıcı modu LMKD + bellek cgroups

    • Bellek baskısına dayalı daha akıllı bir öldürme süreci stratejisi oluşturabilir
    • bellek grupları, bellek baskısı olayları, bellek hesaplama işlevleri, ek kontroller gevşeme ve değişime benzer
    • Günlükler ve izler daha rahat kaydedilebilir
    • Bu çözümün zorluğu: her uygulamanın muhasebe için belleğe sahip olması gerekir; süreç gruplarını öldürmek zaman alır; gruplar arasında görev aktarımı nispeten pahalıdır;
    • Karşılık gelen çözüm: En son çekirdek bellek ek yükünü azalttı, uygulama başlatma süresi% 3 arttı ve birden çok küçük LRU kuyruğunda verimli değil;
    • İşlemi öldürme sürecini AMS kilidinin dışına taşıyarak süreç grubunu öldürmenin zaman alıcı problemi
    • LMKD'nin öldürme süreci grubu ActivityManager'a devredilir

    Kullanıcı modu LMKD stratejisi:

    • Düşük bellekli cihazları ve yüksek performanslı cihazları ro.config.low_ram özelliğine göre bölün
    • Düşük bellek aygıtları: orta bellek baskısı daha yaygındır. Öldürme işlemi esas olarak orta ve kritik bellek baskısı içindir. Oom_adj_score'u yapılandırın. Bellek baskısı takas kullanımına bağlıdır. Öldürme süreci stratejisi ertelenecek, hizmeti çalışır durumda tutmaya çalışın
    • Yüksek performanslı ekipman: Kullanıcı deneyimini optimize etmek için performansa öncelik verin ve olabildiğince fazla bellek ayırın. Öldürme stratejisi geliştirilecek ve belleğin düşük basınç durumunda olmasını sağlamak için bir seferde birden çok işlem öldürülecek ve sistemi düşük bellek basıncı durumunda tutmak için bellek daha agresif bir şekilde serbest bırakılacaktır.

    gelecek

    • Giriş sinyaline (kullanılabilir bellek, görev boyutu, bellek basınç değeri, sık bellek baskısı olayları) dayalı olarak öldürme süreci stratejisini iyileştirin
    • Daha fazla kontrol mekanizması sağlamak için öldürme süreci stratejisini birleştirin
    • Öldürmenin zamanlamasını ve hafıza baskısının potansiyelini keşfedin
    • Cgroups v2 ile çalışır

    4. F2FS

    sdcardfs ve sigorta, şeylerin bir seviyesidir. sdcardfs, sigortadan daha iyi performansa sahiptir. Aynı dosyayı çalıştırmak için, sigortanın kullanıcı modu ve çekirdek modu arasında 6 kez geçiş yapması gerekirken, sdcardfs yalnızca iki kez gerekir. Ext3, ext4, f2fs gibi sigorta için çeşitli dosya sistemleri kullanılabilir.

    (F2FS, Flash Dostu Dosya Sistemi) dosya sisteminin önemli özellikleri

    • Arka plan temizleme: Dosya sistemi parçalanması ciddi olduğunda, okuma ve yazma hızı azalır ve dosya parçalarını temizlemek için parçalanmayı önleyen bir arka plan dizisi başlatılır;
    • Asenkron atma: Diskard dosya sistemindeki depolama alanının ortadan kaldırılması, flash belleğin aşırı GC değerini azaltmak için gereklidir.Senkronize atma, kullanıcılar için nispeten büyük bir gecikmeye sahip olduğunda, asenkron atma kullanılır;
    • Atomik yazma: SQLite, kayıt dosyalarını yöneterek veri güvenliğini garanti eden ve birçok fazlalık yazma ve senkronizasyon işlemi getiren Android'in varsayılan veritabanıdır; atomik yazma, kayıt dosyalarını etkili bir şekilde azaltabilir;

    Ext4 ile karşılaştırıldığında, F2FS dosya sıralı yazma, rastgele yazma ve SQLite'da önemli bir gelişmeye sahiptir. Google, F2FS'nin performansını ve kararlılığını ayarlamaya devam edecek.

    5. Performans

    Android O'da büyük Binder kilidini daha ince taneli kilitlere bölmek, bağlayıcı kilidi rekabeti sorununu gerçekten çözer.

    • Çekirdek sürücü kodu, sürücüde uzun süreli devre dışı bırakmayı önlemek için gerektiğinde RT zamanlayıcı kullanabilir
    • Önermek:
    • Mümkünse, mem gruplarını kullanmanız önerilir.
    • userdata dosya sistemi, f2fs önerilir
    • Gereksiz çekirdek yapılandırma öğelerini kapatın
    • Gereksiz günlükleri kaldırın
    • İlk belgelerde, düşük bellekli cihazlar için KSM'nin etkinleştirilmesi ve sonraki sürümlerde KSM kullanılmaması önerilir.

    P, aynı performans altında güç tüketiminin nasıl iyileştirilebileceğine daha fazla önem veriyor EAS, bir ayarlama yönteminden ziyade güç tüketimi modeli ve performans verilerine dayalı genel bir CPU planlama algoritmasıdır.

    Android neden EAS zamanlama algoritmasını kullanıyor? Güç tüketimini ve performansı birleştiren standart bir programlayıcıya ihtiyaç vardır ve planlama stratejisi Çerçeve aracılığıyla ayarlanabilir.Burada kaynak yük dengelemesini, büyük ve küçük çekirdekleri, cpufreq'i, vali, büyük çekirdek kullanımını azaltmayı ve güç tüketimini dengelemeyi göz önünde bulundurmanız gerekir. EAS r1'i Mayıs 2018'de tamamlayın .6 versiyonu.

    Çerçeve

    1. AMS

    Android P'den başlayarak, yalnızca Amaç bayrağında FLAG_ACTIVITY_NEW_TASK belirtildiğinde, Etkinlik dışı senaryolarda Etkinlik başlatılmasına izin verilir.

    Uygulama, ön plan hizmetlerinin kullanımına izin vermek için FORREGROUND_SERVICE iznine sahip olmalıdır, aksi takdirde bir istisna atılır.

    Şu anda birçok APP geliştiricisi, Android O'nun bazı arka plan kısıtlamalarındaki değişiklikler hakkında fazla bir şey bilmiyor. Sorunlarla karşılaştıklarında, bunları sistem sorunları olarak yanlış anlayabilirler.Bu nedenle, Android O'nun arka plan davranışı üzerindeki bazı kontrollerden bahsediyoruz.

    • Arka Plan Hizmeti (Arka Plan Hizmeti) kısıtlamaları
    • İşlem 1 dakika arka planda kaldığında, boşta durumuna geçecek ve sistem arka plan hizmetini durduracak, bu da uygulamanın arka planda 1 dakika içinde bitirme işini işlemesi gerektiği anlamına gelir ve sistemi arka planda uzun süre izlemesine izin verilmez, böylece güç tüketimi tasarrufu sağlanır; Arka planda kullanıcılar tarafından algılanmayan işlemleri gerçekleştirin. Resmi öneri JobScheduler'ı kullanmaktır.
    • Arka plan işleminin hizmeti startService aracılığıyla başlatmasına izin verilmez, aksi takdirde targetSdk olacaktır > = 26, IllegalStateException oluşturur;
    • Ön Plan Hizmeti'nde bu tür bir kısıtlama olmayacaktır çünkü Ön Plan Hizmeti kullanıcı tarafından görülebilen bir ön plan bildirimini asacaktır. Android O, ön plan hizmetini başlatmak için startForegroundService () öğesini ekler, ancak uygulamanın hizmet başladıktan sonra 5 saniye içinde startForeground () öğesini çağırması gerektiğine dair bir kısıtlama vardır, aksi takdirde bir ANR atar
    • Yayın kısıtlamaları:
    • Uygulamalar, bildirimleri tarafından kaydedilen örtük yayınların çoğunu kullanamaz, ancak BOOT_COMPLETED, LOCALE_CHANGED vb. Gibi bazı örtük yayınlara izin verilir. Bu, güç ve performanstan tasarruf etmek ve çok sayıda uygulamanın kendilerini yukarı çekmek için çeşitli yayınları dinlemesini önlemek için yapılır.
    • Liste kaydının açık yayını ve dinamik kaydın örtük yayını hala normal şekilde çalışabilir.

    2. PMS

    Çekirdek hizmetlerin kod karmaşıklığını azaltmak, izni, amacı ve diğer kodları sınıfları ayırmak için yeniden düzenleme Paketi Yöneticisi,

    Kullanıcı yönetimi, dex, kısayollar vb. Gibi ilgisiz kodları alt paketlere taşıyın; kilitlenmeyi önlemek için yerel verileri olabildiğince değiştirin; aynı zamanda birim testlerini artırın.

    Android O'da PMS'nin ana değişikliği, başlatma süresini optimize etmek ve işlemi olabildiğince paralel yürütmektir.Android P'deki ana değişiklik, tarama işlemidir scanPackageOnly (),

    Sonraki adım, nesne üyelerini değiştirmenin yollarının sayısını azaltmak için Amaç çözümleme, paket doğrulama, dexopt vb. Gibi daha fazla alt bileşen ve sınıf çıkarmaktır.

    3. WMS

    Android O'da, pencere nesne modelini ve kapsayıcı hiyerarşisini yapılandırın, CTS kapsamını iyileştirin ve birim testi uygulayın, SurfaceFlinger, SurfaceView için hiyerarşik yapıyı ve Görev anlık görüntülerini sunar. Android P'de, nesne modellerinin oluşturulmasını iyileştirmeye devam edin, APP Geçişlerini, WindowScope araçlarını senkronize edin,

    Yığın Kimliğinin aşırı kullanımı, Yığın benzer görevleri ve etkinlikleri, HOME_STACK_ID, FULLSCREEN_STACK_ID, FREEFORM_STACK_ID gibi belirli pencere modlarını yönetir ve bu da aynı Yığın görevlerine ve etkinliklerine farklı pencere modlarına izin verilmez. Yeni şema birden çok WindowContainer'a izin verir ve pencere modu artık Yığın Kimliği ile sınırlı değildir.

    Senkronize APP Geçişlerini ve animasyonlarını kullanma işlemi artık WMS kilitleri gerektirmez. Ek olarak, Transitions, WindowScope aracı, WindowManager ve SurfaceFlinger'ı rahatça görüntülemek için kullanılabilen systrace'e benzer bir araçtır.Sadece userdebug sürümünde etkinleştirilir ve performans üzerinde küçük bir etkisi vardır.

    4. İyileştirilmiş pil ömrü

    Pil ömrü açısından JobScheduler, Doze, örtük yayın kısıtlamaları, arka plan hizmetleri ve konum kısıtlamaları ve önbellek uyandırma kilidi serbest bırakma gibi işlevler vardır.

    Google'ın güç tüketimi için genel bir stratejisi yoktu. Farklı OEM'lerin genellikle güç tüketimi için Force stop uygulaması gibi farklı stratejileri vardır.

    faaliyeti / hizmeti öldürme vb. Bu sefer, Android P güç tüketimine de odaklanıyor.Google, kullanıcı alışkanlıklarını tahmin etmek ve güç tasarrufunu optimize etmek için Android P'de makine öğrenimi fikirlerini kullanmayı planlıyor.

    Bu nedenle, uygulamalar dört kategoriye ayrılmıştır: Etkin, çalışma kümesi, sık ve nadir ve farklı bölümlere ayrılmış uygulamalar İşler, Alarmlar, Ağ ve FCM gibi kısıtlama stratejilerini benimser.

    Şu anda, birçok uygulama arka planda ayakta kalabilmek için fg hizmetini askıya alıyor. Aslında, Google, üreticiler de dahil olmak üzere, geliştiricilerin her zaman bu yolu kullanmasını kesinlikle önermiyor. Gerektiğinde bunları kullanmak için arka planda gezinme ve arka planda müzik çalma gibi ellerinden geleni yapmaları gerekiyor.

    Bu nedenle fg-service, kullanıcıların uygulamanın davranışını bilmelerini sağlamak için bildirimler göstermelidir.Arka plan etkinliği gerekmiyorsa, ön plan bildirimi hala görüntülenir.Ardından, kullanıcı onu aktif olarak öldürebilir veya hatta kaldırabilir.

    5. Makine öğrenimi

    Android 8.1'de sinir ağı API'si tanıtıldı, Android yerleşik makine öğrenimi sağlandı ve Android P'de TensorFlow daha da genişletildi ve iyileştirildi.

    AI, daha akıllı güç tasarrufu stratejileri için Android P'de kullanıcı davranışını tahmin etmek için kullanılır. Makine öğrenimi, UI arama arayüzünde de kullanılır. AI, Android sistemini kademeli olarak güçlendiriyor.

    Dinamik Uygulama, uygulama mağazası desteği gerektirir. Uygulamanın sürüm biçimine dayalı kaynak dosyaları, yapılandırma, dil ve bilgilerin tümü, APK boyutunu basitleştirmek için Dinamik Uygulamayı kullanabilir.

    Otomatik doldurma: platform, eklenti, uygulama, tarayıcı, eksiksiz bir otomatik doldurma çerçevesi çözümü seti

    6. Konum

    Telefon deneyimi

    Arama yapma kullanıcı deneyimini iyileştirin, farklı uygulamaların eşzamanlı aramalarını desteklemek için API'leri genişletin, Telecom tüm etkin aramaları izleyebilir, ancak yalnızca bir uygulama odaklanabilir. Ek olarak,

    SIM durum değişikliklerinin yayınını ayarlayın, SIM_STATE_CHANGED SIM_CARD_STATE_CHANGED ve SIM_APPLICATION_STATE_CHANGED yayın olarak değiştirildi.

    TelephonyManager da eşzamanlı olarak ayarlandı.

    Aktivite tespiti

    Aktivite algılama, yürüme, koşma, bisiklete binme, araba kullanma, merdiven inme ve inme özelliklerini belirlemek ve hatta kullanıcının bir arabada, metroda, trende veya motosiklette olup olmadığını ayırt etmek için sensör ve ses verilerini birleştirir ve ayrıca uyku düzenlerini de belirleyebilir.

    AR, sürüş modunda olduğunu algıladığında, sürücüyü rahatsız etmemek için bildirimi durdurur. Kullanıcı etkinliği durum geçişi için sisteme API sağlayın

    İç mekan navigasyonu

    Doğru WIFI iç mekan konumlandırma elde edemedi. Android P sistemi IEEE 802.11mc WiFi protokolünü destekliyor. İç mekan navigasyon işlevi yakında kullanıma sunulacak. Uygulama, konumlandırma hizmetlerine kolaylık sağlamak için iç mekan konumlandırmayı kullanabilir.

    CHRE

    Güç tüketimini optimize etmek, Doz modu ve arka plan konumlandırma kısıtlama modu gibi AP'yi olabildiğince az uyandırmanız gerektiği anlamına gelir. Context Hub çalışma zamanı ortamı tanımlayın Bu ortamdaki CPU'nun doğrudan Java / Linux çalıştırmasına izin verilmez, ancak yalnızca özel işlevlere izin verir.

    Context Hub Service, kullanımı daha kolay olan Android P'de uygulanmaktadır. Takip her zaman açık, düşük güç modu olabilir

    Çalışma süresi

    1. SANAT ve libcore

    Kurulum, güncelleme ve OTA sırasında, ART'ın sıkıştırılmış dex'i APK'dan çıkarması ve doğrulaması gerekir, bu da alanı ve CPU zamanını boşa harcar.

    Bu amaçla, yapılan plan sıkıştırılmamış dex dosyalarını kullanmaktır, mağaza bunu Java'da doğrular ve doğrulama sonuçlarını doğrudan yükleme sürecinde kullanır.

    Dex dosyaları için, bellek ve depolama alanı kullanımını, daha akıllı düzen optimizasyonu ve daha az flash bellek okumasını azaltmak için yeni bir kompakt format benimsenmiştir.

    Hata ayıklama ile ilgili olarak, kesme noktaları, istisnalar ve diğer olaylar, yerel değişken incelemesi, alan izleme ve sınıf yeniden tanımlama dahil olmak üzere daha genişletilmiş işlevler sağlamak için ART hata ayıklayıcı yerine JVMTI kullanılır.

    Geriye dönük izler, bir işlemi dönüştürmek için addr2line'ı kullanma ihtiyacını ortadan kaldırarak görüntülemek için Java bağlamını kullanır; bu, sorunları ayıklamak ve analiz etmek için uygundur. Örneğin

    Android'in resmi dili Kotlin, performansı Java uygulamasından daha yavaş değil

    Buluttaki Profiller:

    N'den başlayarak, derlemek için profil yöntemini kullanmak depolama alanı, bellek, güç tüketimi ve CPU kullanımı için faydalıdır, ancak şu anda profil yalnızca yerel bir yöntemdir.

    Yine de öncelikten önce profilin alınmasını beklemeniz gerekir. Gelecekte, kullanıcının profili toplanacak ve buluta yüklenecek (Google play) Profil, kurulum sırasında buluttan alınacak ve doğrudan yeni kullanıcı tarafından kullanılacaktır.

    Muhtemelen soğuk çalıştırma performansını% 20 artırabilir.

    çekirdek kitaplık

    Libcore kodunu OpenJDK 9'a yükseltin. APP kullanımdan kaldırma politikası, Android, targetVersionSdk olduğunda desteklenen minimum sürümü ekleyecektir < 17 uygulaması bir uyarı kutusu açacaktır.

    Apache HTTP kitaplığını, JUnit'i bootclasspath'den kaldırın

    2. Soong derleme sistemi

    GNU Make'den Soong'a taşıyarak Java derlemek için Soong kullanın

    Çapraz sürüm oluşturma süreci:

    Android.bp Android P tarafından görülebilir, tüm bağımlılıklar android.bp kullanmalıdır, androidmk aracı, make dosyalarını Android.bp dosyalarına dönüştürmek için kullanılabilir;

    3. Özel API

    Android P, çalışma zamanında yansıma yoluyla sınıfları, yöntemleri ve @hide olarak işaretlenen öznitelikleri işlemek için uygulamalara kısıtlamalar uygular.

    API 4 kategoriye ayrılmıştır: beyaz liste, gri liste, koyu gri liste, kara liste; API beyaz listeye ait olduğunda kısıtlama yoktur, gri liste (targetSdk P) bir uyarıdır ve kara liste

    NoSuchFieldException / NoSuchMethodException atılır. Koyu gri liste için, targetSdk'ye bağlı olarak gri liste ile kara liste arasındadır,

    Kara liste modunda (targetSdk blackP) işlendiğinde, (targetSdk P) gri liste modunda işlendiğinde.

    Kara liste için, yalnızca platform APP'sinin onu kullanmasına izin verilir. Gri listedeki API doğrudan bir istisna oluşturmasa da, sürümler arası uyumluluk artık garanti edilmez. Bu kısıtlama, sonraki yeni sürümün uyarlamayı daha hızlı tamamlayabilmesi içindir.

    Google'ın gri-beyaz ve kara liste tasarımı, uygulamalara geçiş fırsatı ve Android'e genel API'leri iyileştirme fırsatı sunacaktır. Çok önemli bazı @hide arayüzleri için, uygun şekilde genel arayüzler eklemeyi de düşünebilir. Ek olarak, bu API'ler İlk partide kara listeye eklenecek görülecektir. AOSP'nin kara listesi ve koyu gri listesi CTS testine alınacak ve böylece üreticilerin listeyi kolayca değiştirmesi engellenecektir.

    Uyumluluk testiyle ilgili olarak, Google şu anda CTS / VTS / GTS'ye sahiptir ve bunlardan CTS temel olarak API davranışını test eder, VTS Treble planlarını ve HW uygulamasını test eder ve GTS, GMS gereksinimlerini ve dağıtım sözleşmelerini hedefler.

    Yakında Google, gizlilik testi için STS'yi başlatacak. En İyi uygulamaların test verilerinden yola çıkarak, yerel uygulamaların çoğunda şu anda uyumluluk sorunları var. Sorunlar çoğunlukla düzeltmeler, kafa karışıklığı, güçlendirme ve dahili API'lere bağımlılıktır.

    Ek olarak, @SystemApi artık geriye dönük olarak uyumlu değildir ve neredeyse tüm sistem API'leri izin gerektirir.

    / vendor / priv-app, Android P'de desteklenecek ve izinler, vendorPrivileged tarafından tanımlanan izinlerle kısıtlanacaktır.

    Güvenlik

    Tüm ağ trafiğini açık metinden TLS'ye geçirin ve tüm açık metin trafiğini engellemek için Ağ Güvenliği Yapılandırmasının varsayılan değerini değiştirin.

    Kullanıcı gizliliğini korumak için, uygulama UID'si boştayken, uygulamanın kamera, mikrofon ve sensörü kullanmasıyla olan bağlantısını kesin Uygulama kullanmaya zorlanırsa, hatalar üretilecek ve böylelikle hileli uygulamaların arka uç cep telefonu gizlilik verilerinden daha fazla engellenmesi sağlanacaktır.

    FBE şifreleme: FBE, ileri teknoloji meta veri şifreleme cihazlarını daha kolay destekleyecek ve sdcard desteği sağlayacaktır. OEM'ler için nakli daha kolaydır. Düşük kaliteli cihazlar için, daha hızlı algoritmalar, tüm modellerin nakli için uygun

    sonuç olarak

    • Android P'nin Treble planı, Android'in sonraki ana sürümlerinin hızlı yükseltilmesi için destek sağlar;
    • Yeni bir Soong derleme sistemi benimseyin, Android.mk'yi Android.bp ile değiştirin;
    • Özel API'lerin sınırlandırılması, Android ekosistemini daha da standartlaştırır, ancak aynı zamanda ekosistemdeki çoğu uygulamanın mevcut olmaması riskiyle karşı karşıyadır;
    • Varsayılan olarak, depolama performansını artırmak için sdcardfs kullanılır Ext4 ile karşılaştırıldığında, F2FS dosya sıralı yazma, rastgele yazma ve SQLite'da önemli bir gelişmeye sahiptir;
    • Çerçeve, PMS ve WMS kilitlerini kademeli olarak optimize eder ve AMS kilitleri de gelecekte optimize edilmelidir;
    • Su yapay zeka teknolojisini kademeli olarak test edin ve sistemin dayanıklılığını artırmak için APP arka planının kontrolünü güçlendirin.

    Kısacası Google, bir yandan Android sistemini sistem düzeyinden optimize etmeye devam ederken, diğer yandan APP ekosistemini iyileştirmeye, dost olmayan APP'lerin kontrolünü sürekli olarak güçlendirmeye ve sistem performansı ve pil ömrü üzerindeki etkisini azaltmaya kararlı.

    SON

    [Ekli] İlgili çerçeve ve bilgiler

    İzle + özel mesajı ücretsiz "Android verileri" yanıtlayın!

    Önceki Android gelişmiş mimari materyallerine, kaynak koduna, notlarına ve videolarına erişim sağlayın. Gelişmiş kullanıcı arayüzü, performans optimizasyonu, mimar kursları, NDK, hibrit geliştirme (ReactNative + Weex) WeChat uygulamaları, Android gelişmiş uygulama teknolojisinin tüm yönlerini Flutter.

    Model oyun kontrolü: ana akım olmayan üretim rx79g-ez8
    önceki
    Model oyun kontrolü: AYERLIS BTF ZZ dönüşümü, kusurlu canavar
    Sonraki
    Capcom, dünya çapında 5500 setle sınırlı "Street Fighter 2" nin SFC versiyonunu yeniden yayınladı
    Wang Baoqiang, etrafını saran filmin tanıtımını yapmak için ebeveynlerini memleketine geri götürdü. Kalabalık, onu görmek için "akrobasi oynadı"
    Android bileşenli mimari uygulaması
    Model oyun kontrolü: pembeye ve yumuşaklığa dayanıklı olabilir
    Ge'nin uçakta uçmamasının gerçek nedeni, "Fragment" filminin basın toplantısında gerçeği söyledi.
    "Aşk Dairesi" gişede rekor düşüş yaşadı, neyi düşünebiliriz?
    Model Oyun Kontrolü: Taipan MB Red Heresy Püskürtme
    Android-Performans Optimizasyon Şeması Paylaşımı
    Bir yıl önce, yoldan geçenler artık Gong Li ile aynı çerçevedeydi.
    Huang Xiaoming, 2 milyar hisse senedi manipülasyon davasına karıştı ve kendi adına yaklaşık 50 şirketi var.
    Model oyun kontrolü: Wing GUNDAM
    Mengniu, hızla ilerleyerek Çin'in süt ürünleri endüstrisinde dünya standartlarında sağlam bir kalite oluşturuyor
    To Top