Tinker熱修復簡單接入

2021-07-24 05:50:33 字數 3674 閱讀 7852

tinker接入我們分為以下步驟進行:

當前流行的熱修復框架對比:

第一步:

新建工程,在工程的根目錄的build.gradle下的dependencies中新增:

classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.1')
第二步:

compile('com.tencent.tinker:tinker-android-anno:1.7.1')

compile('com.tencent.tinker:tinker-android-lib:1.7.1')

//用來簽名

signingconfigs

}

tinkerpatch

packageconfig

dexres

sevenzip

def bakpath = file("$/bakapk/")

/***/

def taskname = variant.name

tasks.all ".equalsignorecase(it.name)) /outputs/apk/$-$.apk"

into bakpath

rename -$.apk", "$-$-$.apk")

}from

into bakpath

rename

from

"$/intermediates/symbols/$/r.txt"

into bakpath

rename -$-$-r.txt")}}

}}}}

}

第三步:

/**

* created by administrator on 2016/10/14

*/@defaultlifecycle(

flags = shareconstants.tinker_enable_all

)public

class

extends

public

}@override

public

void

oncreate()

@override

public

void

onbasecontextattached(context base)

}

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

android:name="android.permission.write_external_storage"/>

android:name="android.permission.read_external_storage"/>

android:allowbackup="true"

android:icon="@mipmap/ic_launcher"

android:supportsrtl="true"

android:name="android.intent.action.main" />

android:name="android.intent.category.launcher" />

intent-filter>

activity>

manifest>

第四步:

這也是最後一步,我們在mainactivity的oncreate中進行補丁檔案的讀取載入,新增如下**:

//這個toast就代表這個是有bug存在apk的標誌

toast.maketext(this, "有個bug需要修復", toast.length_short).show();

tinker的配置就算是大功告成了,接下裡我們將開始補丁的製作與如何用補丁修復有bug的apk。

首先:

我們先來執行專案

還記得我們在build.gradle檔案中指定了簽名檔案,還指定了生成apk的路徑def bakpath = file("$/bakapk/")那麼我們程式跑出來了,我們就到指定的檔案下看看是否生成有bug的apk。

接下來:

有bug的apk已經就緒,接下裡就是:

修改bug,這裡我們為了測試就單純的修改之前我們**中寫的toast

toast.maketext(this, "bug已修復", toast.length_short).show();
到了關鍵的一步了,生成補丁檔案

開啟terminal輸入命令gradlew tinkerpatchrelease (tinker提供了兩個生成差異包的命令還有個是gradlew tinkerpatchdebug)

我們直接回車,然後我們會看到命令列不停的在執行著

看到了成功,補丁檔案在**呢?沒錯就在上面就有它的路徑:

好的我們馬上找到它:

沒錯就是它,他就是我們需要的補丁檔案,和我們在mainactivity檔案中指定的檔名稱一致,我們的差異檔案的生成便完成了。

我們僅僅需要把生成的補丁檔案放到我們在mainactivity中指定的路徑,這裡我們指定的是手機儲存的根目錄

然後kill有bug的程式,然後重啟它,我們就可以看到bug被修復了。

大家可以去看看我的另一篇關於熱修復的部落格

tinker熱修復之加固bugly整合

Tinker熱修復隨筆

使用walle讀取渠道資訊傳遞給友盟 專案整合美團的walle用於讀取apk的渠道資訊,並將渠道資訊傳給友盟統計 在友盟統計初始化的時候傳遞過去 walle有兩個主要功能 多渠道打包和讀取渠道資訊 但是由於walle多渠道打包後,再去加固,渠道資訊會丟失,所以只用walle的第二個功能讀取渠道資訊,...

Bugly接入Tinker熱更新流程

專案中之前已經接入bugly的異常收集和全量更新sdk,為了應對bug及時修復以及一些改動不太大的需求,準備接入tinker。而bugly已經對tinker做了很好的支援,不用從頭到尾接一遍。接入流程 一 新增外掛程式依賴,在根目錄的build.gradle中 classpath com.tence...

android熱修復框架Tinker(一)

碼農碼頭 2017 01 22 10 46 有的朋友會對android拆包和熱修復兩個概念分不清。簡單來說就是 拆包 是由於dex檔案格式限制,乙個dex檔案中method個數使用原生型別short來索引檔案中的方法,也就是4個位元組共計最多表達65536個method,field class的個數...