【Kotlin】熱修復

使用Andfix

AS創建kotlin項目

AndroidManifest增加權限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

activity_main.xml放一個TextView

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

MainActivity.kt

class MainActivity : AppCompatActivity() {

    //懶加載初始化view
    val mTvResult by lazy {
        //findviewbyid
        tv_result
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        tv_result.text = "有bug的版本"
    }
}

引入Andfix

app下的build.gradle

    implementation 'com.alipay.euler:andfix:0.5.0@aar'

初始化要放到Application中,新建MyApplication.kt

class MyApplication:Application(){
    override fun onCreate() {
        super.onCreate()

        val patchManager = PatchManager(this);
        patchManager.init("1.0");//current version

        patchManager.loadPatch();
        //設置文件路徑
        val filePath = File(Environment.getExternalStorageDirectory(),"fixbug.apatch")
        //合併補丁文件
        if(filePath.exists()){
            patchManager.addPatch(filePath.absolutePath);
        }
    }
}

AndroidManifest中註冊

	<application
        android:name=".MyApplication">
        ......
    </application>

運行程序把生成的apk改名爲bug
在這裏插入圖片描述

修改MainActivity.kt

    	tv_result.text = "修復bug的版本"
        tv_result.setTextColor(Color.RED)
        tv_result.textSize = 50F

再次運行程序,把生成的apk改爲fix-bug
在這裏插入圖片描述
在這裏插入圖片描述

獲取差分包

在Andfix的github地址提供了一個獲取差分包的工具,apkpatch

如果下載慢可以去我的網盤下載
提取碼:te2k

把剛纔兩個apk和默認的簽名文件debug.keystore放到解壓好的文件夾中,在當前路徑打開cmd

輸入apkpatch.bat可以查看使用說明
在這裏插入圖片描述


apkpatch -f fix-bug.apk -t bug.apk -o out -k debug.keystore -p android -a androiddebugkey -e android

-f 新apk
-t 舊apk
-o 輸出路徑
-k keystore
-p keystore密碼
-a keystore別名
-e keystore密碼

在這裏插入圖片描述

運行之後,生成的out中有.patch文件,我們改成代碼中的名字fixbug.aptch
在這裏插入圖片描述
安裝有bug版本apk

adb install -r -t bug.apk

把fixbug.apatch保存到sd卡

adb push fixbug.apatch sdcard/

殺死進程,打開權限。再次打開即可得到修復bug的apk

(經測試。在mumu模擬機上成功了。錘子手機也成功了。但是小米6並沒有成功,大牛請評論告訴我原因…)

不足

熱修復不能保證完全修復

下面爲不同熱修復性能對比圖
在這裏插入圖片描述

資源下載

https://download.csdn.net/download/u010356768/12103313

發佈了640 篇原創文章 · 獲贊 149 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章