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!