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的個數...