Android: Bu, kapsamlı ve ayrıntılı bir düzeltme çalışma kılavuzudur

Önsöz

Sıcak yama onarım teknolojisi Android çevresinde çok popüler ve çok sayıda sıcak yama çözümü çok sayıda ortaya çıkmaya başladı

Bu makale size sıcak yama ile ilgili bilgilere kapsamlı bir giriş verecektir (prensip, ana kütüphane kullanımı), umarım beğenirsiniz

içindekiler

1. Giriş

2. Rezerv bilgisi

Sıcak yama ilkesi temel olarak şunlara dayanmaktadır: Android Dex taşeronluk şeması ve Android'in sınıf yükleme mekanizması (ClassLoader)

Bu nedenle, sıcak yama prensibinden bahsetmeden önce, önce yukarıdaki iki rezerv bilgisini anlayın.

2.1 Android Dex taşeronluk planı

Giriş

Şematik diyagram

2.2 Android sınıfı yükleme mekanizması (ClassLoader)

Giriş

İşlem açıklaması yükleniyor

Şematik diyagram

Not: 2 Dex dosyasında yinelenen sınıflar varsa, yükleme sırasında, önce daha yüksek bir sıraya sahip Dex dosyasının sınıfı yüklenecektir.

Gerekli yük sınıfı = class3 ise, son yük Dex1 dosyasında daha yüksek bir siparişle class3'tür.

Kaynak kod analizi

Belirli uygulama sınıfları PathClassLoader ve DexClassLoader BaseDexClassLoader sınıfından miras alındığından, burada temel olarak BaseDexClassLoader sınıfındaki sınıf yüklemesiyle ilgili findClass () yöntemlerini açıklıyoruz.

/ ** * Yükleme işleminin açıklaması ** / // 1. Yüklenecek sınıfın adını iletin (sınıf adı) // 2. Dex dosyası aracılığıyla gerekli sınıfı (findClass) bulun // a. ClassLoader'ın tüm Dex dosyalarını, yani dexElements koleksiyonunu sırayla gezinin // b. Bir Dex dosyası her geçiş yaptığında, Dex dosyasına yüklenecek sınıfı arayın // c. Sınıf, Dex dosyasında bulunursa, geri dönecektir; bulunamazsa, sonraki Dex dosyasını geçmeye devam edecektir. // 3. Gerekli sınıfları yükleyin / ** * BaseDexClassLoader öğesinin findClass () 'ın kaynak kodu analizi ** / @Override korumalı Sınıf < ? > findClass (Dize adı) ClassNotFoundException { // pathList nesnesinden bulun- > > Analiz 1 Sınıf clazz = pathList.findClass (name); eğer (clazz == null) { yeni ClassNotFoundException (ad) oluştur; } dönüş clazz; } / ** * Analiz 1: DexPathList'in FindClass () kaynak kodu analizi ** / public Sınıf findClass (Dize adı) { // 1. ClassLoader'ın tüm Dex dosyalarını, yani dexElements koleksiyonunu sırayla gezinin for (Element element: dexElements) { DexFile dex = element.dexFile; // 2. Bir Dex dosyası her geçiş yaptığında, Dex dosyasına yüklenecek sınıfı arayın. > > Analiz 2 eğer (dex! = null) { Class clazz = dex.loadClassBinaryName (name, definingContext); // 3. Sınıf, Dex dosyasında bulunursa, geri dönecek; bulunamazsa, bir sonraki Dex dosyasını geçmeye devam edecek eğer (clazz! = null) { dönüş clazz; } } } boş döndür; } / ** * Analiz 2: DexFile'ın loadClassBinaryName () kaynak kodu analizi ** / public Class loadClassBinaryName (Dize adı, ClassLoader yükleyici) { return defineClass (isim, yükleyici, mCookie); } / ** * Analiz 3: DexFile'ın defineClass () kaynak kodu analizi ** / özel yerel statik Sınıf defineClass (Dize adı, ClassLoader yükleyici, int çerez);

3. Sıcak Onarım İlkesi

3.1 Ayrıntılı açıklama

Onarılması gereken ve hataları içeren sınıfları bir Dex dosyasına (patch.dex olarak gösterilir) paketleyin

Dex dosyasını ClassLoader'da dexElements koleksiyonunun önüne ekleyin

3.2 Şematik

3.3 Özel dikkat: CLASS_ISPREVERIFIED işareti

özel açıklama

Çözüme özel açıklama

Şematik diyagram

Not: Yukarıdaki adımları tamamlamanız (sınıfın CLASS_ISPREVERIFIED işaretiyle işaretlenmesini önlemek için) ve ardından yamayı uygulamanız gerekir.

4. Açık kaynak kitaplıklarına düzeltme tanıtımı

2015'in ikinci yarısından itibaren, sıcak yama onarım teknolojisi Android çevresinde çok popüler ve sıcak yama çözümleri çok sayıda ortaya çıkmaya başladı

Aşağıda, temel olarak mevcut ana akım düzeltme açık kaynak kitaplıklarını tanıtacağım

4.1 Ana akım düzeltme açık kaynak kitaplığı

4.2 Karşılaştırma

5. Özet

Bu makale temel olarak Android'deki yeni yama ile ilgili bilgileri açıklamaktadır.

Bunlar sadece kişisel görüşlerim ve deneyimlerim, umarım aktif olarak tartışır, değerli deneyimlerinizi paylaşır ve birbirinizi geliştirirsiniz!

Ek bilgi:

Android gelişmiş

Mobil mimar

Bu Android eğitim materyallerine ve röportaj materyallerine ihtiyaç duyan herkesin ilgiye ihtiyacı var + özel mesaj "Android materyallerini" ücretsiz olarak yanıtlıyor!

Ayrıca grupta, ileri düzey kullanıcı arayüzü, performans optimizasyonu, mimar kursları, NDK, hibrit geliştirme: ReactNative + Weex ve diğer Android teknik bilgi mimarisi video materyalleri ve kariyer planlaması dahil olmak üzere üst düzey Android hakkında birçok ücretsiz öğrenme materyali bulunmaktadır. Ve röportaj rehberliği.

Momo ve Tantanyue kullanıcıları% 60'a varan oranda elinde tutuyor, içeri girip görmek için sırrı bilmek istiyor
önceki
Ha Jung Woo'nun kafasından vurduğu şişman adam, Güney Kore'nin en popüler ikinci oyunculuk oyuncusu olmaya hazırdı.
Sonraki
Shenzhou özel otomobilinin eski sürücüsü, profesyonel yarışçı PK profesyonel etkinliklerin sınır ötesi pazarlamasının nasıl oynanacağını görmek için
Kindle daha iyi satıyor, ancak mürekkep ekranı "lanetli"
Model oyun kontrolü: Aban, yakışıklı MG Power Pulse Gundam
"Half-Life 3" olmadığı için, oyuncular "Dota 2" ye çok sayıda olumsuz yorum verdiler.
Bunu bana 7499 yuan için gösterir misin? Samsung tek parlak nokta olan Note 9'u piyasaya sürdü
Model oyun kontrolü: hayranlar saç döker ve kanat uçar, hayranlar sever
Hammer'ın yeni ürünü bugün piyasaya sürüldü, T3'ün adı M1 olarak değiştirildi ve fiyat 2499 yuan'dan başlıyor; Mi Power Bank 279 yuan için piyasaya sürüldü | Lei Feng Morning Post
"Başı Dertte Kadın" ın posteri bariz ve içeriği de aynı derecede şık ve iğrenç
Savaşan ülkeler, yerli filmler için endişelenmek için "Başlangıç" ın ölüm versiyonunu filme aldı.
İnternetin "kışı" nı atlattıktan sonra, sonraki altın üç ve gümüş dörtte BAT için nasıl röportaj yapacaksınız?
Model oyun kontrolü: donuk saçlı GK Wuwang mekanik versiyonu
Oyun Karakter Popülerliği Genel Seçim Bayanlar Finalleri Oylama Etiketi
To Top