Android HotFix sıcak güncellemesine ulaşmak için size adım adım öğretin

Bu makale size sıcak güncellemelerin nasıl uygulanacağını öğretir.

Sıcak güncellemeleri uygulamak için bazı temel noktaları kısaca tanıtmama izin verin:

(1) Sınıfın CLASS_ISPREVERIFIED logosu ile işaretlenmesi nasıl engellenir

(2) Yama paketi nasıl yapılır

(3) Onarılması gereken sınıflar dinamik olarak nasıl yüklenir

Düzeltmeyi uygulamak için attığım adımlar şunlardır:

1. Yeni bir proje HotFixDemo oluşturun (paket yolu: com.jxnu.hotfixdemo)

2. Yeni bir HackDex modülü oluşturun ve bir java dosyası AntiLazyLoad oluşturun (paket yolu: com.jxnu.hackdex)

3. Yeni bir mudule HotFixLib oluşturun, HotFix.java'yı HotFixLib'e kopyalayın, HotFixLib'i HotFixDemo'nun bir bağımlılığı olarak ekleyin ve Utils'i projeye kopyalayın

4. HackDex'in ara klasöründe AntiLazyLoad sınıf dosyasını bulduk

5. AntiLazyLoad.class'ı Disk E com'a koyun > jxnu - > Hackdex dizini altında [dizin adı, AntiLazyLoad.java'nın bulunduğu paket adıyla tutarlıdır]

6. Ardından konsol komutunu jar cvf hack.jar com komutunu çalıştırın ve ardından e sürücüsünde bir hack.jar dosyası alıyoruz

7. Bir sonraki adım, bu kavanozu bir dex kavanozu yapmaktır. Dx kullanıldığından ve bu dx bizim SDK araç setimizde bulunduğundan, bu path.jar dosyasını SDK araç setine kopyalayıp dx --dex komutunu kullanıyorum. --Output = hack_dex.jar hack.jar, hack_dex.jar yama paketi oluşturur

8. Hack_dex.jar dosyasını projenin varlıklar dizinine koyun

9. Yeni HotFixApplication

@Override public void onCreate () {super.onCreate (); File dexPath = new File (getDir ("dex", Context.MODE_PRIVATE), "hack_dex.jar"); Log.e ("mainHHH", "dexPath =" + dexPath.getAbsolutePath ()); Utils.prepareDex (this.getApplicationContext (), dexPath, "hack_dex.jar"); HotFix.patch (bu, dexPath.getAbsolutePath (), "com.jxnu.hackdex.AntiLazyLoad"); deneyin {this.getClassLoader (). loadClass ("com.jxnu.hackdex.AntiLazyLoad");} catch (ClassNotFoundException e) {e.printStackTrace ();}}

10. Yeni bir BugClass dosyası oluşturun

genel sınıf BugClass {public String getInfo () {"Düzeltildim";}} döndür

11. Daha sonra projeyi çalıştırın, BugClass sınıf dosyasını alın, BugClass'ı yukarıdaki hack_dex oluşturma yöntemine göre path_dex.jar dosyasına yapın ve varlık klasörüne koyun.

12. BugClass'ı şu şekilde değiştirin:

public class BugClass {public String getInfo () {return "Ben bir hata sınıfıyım";}}

13. O zaman test edelim, aşağıdaki MainActivity sınıfı

private TextView tv_info; private Button btn_test, btn_patch; @Override korumalı void onCreate (Bundle SavedInstanceState) {super.onCreate (SavedInstanceState); setContentView (R.layout.activity_main); tv_info = (TextView) findViewById (R.id.tv_info); btn_test = (Button) findViewById (R.id.btn_test); btn_patch = (Button) findViewById (R.id.btn_patch); btn_test.setOnClickListener (new View.OnClickListener () {@Override public void onClick (Görünüm görünümü) {tv_info .setText (new BugClass (). getInfo ());}}); btn_patch.setOnClickListener (new View.OnClickListener () {@Override public void onClick (Görünüm görünümü) {File dexPath = new File (getDir ("dex", Context.MODE_PRIVATE), "path_dex.jar"); Utils.prepareDex (MainActivity.this, dexPath, "path_dex.jar"); HotFix.patch (MainActivity.this, dexPath.getAbsolutePath (), "");}}) ;}

14. Sıcak güncellemeden önce, Ben bir hata sınıfıyım öğesini görüntülemek için "Test" düğmesine tıklayın

15. Ardından yamayı test edin, uygulamayı yeniden başlatın, önce "Yama" düğmesine tıklayın ve ardından "Test Et" düğmesine tıklayın, düzeltme işleminin başarıyla uygulandığını göstererek düzeltildiğimi göstermesine izin verin

Proje kaynak kodu adresi: https://github.com/DaiQing-Zha/HotFixDemo.git

Yukarıdaki, Android HotFix düzeltmesini uygulamanız için adım adım talimattır. Adım adım Android uygulaması için, düzeltme içeriğini güncelleyin. İlgili bilgileri almak için lütfen sağ üstteki arama işlevini kullanın.

İşte herkesin kolayca öğrenmesi için en son Android teknolojileri hakkında bazı zihin haritaları.

Bu bilgiye ihtiyacı olan herkes, ihtiyacı olan herkes takip + ilet + özel mesaj "Android bilgileri" ücretsiz olarak yanıtlanır!

Ayrıca grupta, gelişmiş kullanıcı arayüzü, performans optimizasyonu, mimar kursları, NDK, hibrit geliştirme: ReactNative + Weex ve diğer Android teknik bilgi mimarisi video materyalleri ve çeşitli e-kitap okuma dahil olmak üzere üst düzey Android hakkında birçok ücretsiz öğrenme materyali bulunmaktadır. , Özel mesajlar, özel mesajlar, ihtiyacınız olan özel mesajlar: "Android Bilgileri" almak ücretsizdir!

Hayalet yok, canavar yok, ancak netizenler tarafından "Yılın En İyi Korku Draması" seçildi: "Evil Deeds"
önceki
Analog oynatma kontrolü: ayrıntılarla dolu, 1/100 MSN-02 ZEONG
Sonraki
"The Creation of Hakata Company" nin Japonca versiyonunun Çince versiyonunun çıkış tarihi onaylandı
Shenzhen'de bir araştırma ve geliştirme merkezi kurmak için Shenzhen'de havadan yemek yapın; iPhone7 siyah ve parlak siyah modellerin soyulması da aynı derecede kolay olabilir | Lei Feng Morning Post
Model oyun kontrolü: Evrendeki Swallowtail kelebek, MC Capini
Herkes "Dünyadaki Sadece Anne İyi" adlı bir şarkı olduğunu bilir, ancak bu yeni dizi "gerçeği" yıkar
"Color Jet Group 2" Japonya'da 1 milyonun üzerinde sattı, gençler oyun oynamayı seviyor
Model oyun kontrolü: GP01 küçük değişim, güçlü gövde
190417 "Başarısızlık Büyüme" BTS, hayranların dünyayı "PERSONA" ile meşgul etmeyi sevdiği ihtişamı gösteriyor
Sektörde deneyimli bir sürücü olan Showtime tarafından üretilmiştir. Anlamıyorsanız, lütfen bu basit başlığa bakın
Model oyun kontrolü: eski kamuflaj kara muharebe keskin nişancı Jim SP2
Pinduoduo'ya pazarlama perspektifinden bakmak: üretim gücü + süper trafik platformu = sahte marka gücü?
2016 Çifte Girişimcilik Haftası | Başbakan'ın gördüğü Shenzhen Çifte Girişimcilik Haftası'nda öne çıkan noktalar neler-VR / AR
"Pokémon Ultimate Sun / Ay" yeni bilgi özeti
To Top