新增依賴
初始化生成補丁
下發補丁
新增project依賴:開啟專案project的gradle新增以下**
buildscript
dependencies
}
新增model依賴:開啟model的gradle檔案,如下新增依賴,只需要新增注釋標明部分即可,這裡我是固定使用的1.9.8的tinker
android }
}buildtypes
}sourcesets
}dexoptions
lintoptions
}repositories
}dependencies
新增tinkerpatch.gradle:這個步驟就是建立上面gradle依賴的tinkerpatch.gradle檔案
第一步:新建乙個gradle檔案,名字叫做tinkerpatch.gradle,建立完成之後就是這樣子了
第二步寫入tinker配置。這裡直接照抄官方的配置就可以,下面是我自己修改過的,下面是我自己的配置
def bakpath = file("$/bakapk/")//這個是編譯基礎包的位置
tinkerpatchsupport "
/**bakapk目錄下的apk檔案
* 所謂基礎包,是你在生成補丁包時,那個拿來對比的安裝包,務必在出版本的時候保留,
**/baseapkfile = "放置基礎包的路徑"
* 當你的應用開啟混淆時會在bakapk和apk同乙個目錄下會生成這個檔案,不開啟混淆則不會生成
**//**bakapk目錄下的-r.txt檔案
* 在bakapk和apk同乙個目錄下會生成這個檔案
**/baseresourcerfile = "資源對映檔案"
}/**
* 用於使用者在**中判斷tinkerpatch是否被使能
*/android "
}}/**
* 一般來說,我們無需對下面的引數做任何的修改
* 對於各引數的詳細介紹請參考:
再貼出一下bakapk的目錄結構
// 每隔3個小時去訪問後台時候有更新,通過handler實現輪訓的效果
new fetchpatchhandler().fetchpatchwithinterval(3);}}
fetchpatchhandler的**,主要就是乙個定時器:
public class fetchpatchhandler extends handler
@override
public void handlemessage(message msg)
}
這樣子,專案就配置好了tinker了,接下來是補丁生成和下發的部分。
生成基礎檔案(apk,r.txt,maping.txt)
對比生成補丁
生成基礎檔案:
這個步驟一般在實際專案中發生在出版本的時候,操作如下
執行完成之後會在bakapk目錄下生成乙個新的資料夾,裡面包含了三個或者兩個檔案,把這幾個檔案放置到你tinkerpatch.gradle中配置的那個檔案目錄下方,這個apk就是提供給使用者的apk
對比生成補丁,當我們發生bug之後,**修改後,此時需要生成補丁上去修復故障,在生成基礎檔案的時候我們已經將基礎檔案放置到對應目錄下了,那麼接下來直接這麼操作:
在編譯完成之後會列印出如下日誌
find the output 後面那個就是補丁包的生成路徑了,路徑下存在打好的補丁包了
這時候開啟tinker官網找到自己需要發布的應用,建立好對應版本,然後選擇檔案下發就可以了,這個版本是和tinkerpatch.gradle裡面配置的版本對應的。
1.tinker上傳補丁包顯示非法
2.tinker修復之後程式直接崩潰
這邊列舉一種我碰到的錯誤:在補丁下發並且合成之後,再次開啟程式,直接崩潰,顯示資源未找到異常,這時候請檢查你的補丁包資料夾是否有除了.apk之外的其他檔案,如果有恭喜,這個檔案通過充錢可以解決,首先說下產生原因:
tinker在生成補丁的時候會把設定的部分進行乙個對比,一旦發生改變就會新增到補丁包中,這個是可以配置的,例如你的資源檔案發生了改變,那麼會多出乙個resource.7z的資源補丁包,這時候在補丁包中指定的資源id就變了,就是r.id.***對應的那些r檔案的資源變了,這時候你需要上傳兩個補丁乙個是資源補丁,乙個是**補丁,不然會notfoundexception,在as3.0開啟了aapt2之後,莫名的所有資源都會檢測到修改,這個我也不知道為啥,所以會生成乙個巨大的資源補丁包,這時候官方免費的版本是不能上傳太大檔案的(所以如果想修改資源,建議使用付費版)。
重點來了:但是實際中如果你不需要替換資源,又想不交錢,那麼可以指定對比的資源,只修改**這時候也是能夠解決問題的
配置tinkerpatch.gradle如下:
/**
* 一般來說,我們無需對下面的引數做任何的修改
* 對於各引數的詳細介紹請參考:
* */tinkerpatch
lib
//修改此處,這邊是修改tinker打包資源時對比的資源選項,其中src是預設的,但是資源檔案可以按照需
//要自己配置,我這邊配置只對比androidmefest.xml的內容,所以我配置的tinker只能修改**,這裡按//照自己需要配置
res
packageconfig
sevenzip
buildconfig
}
其次在安卓8.0之後3小時一次的輪詢據說失效,我沒測試過,大家可以試試,且又聽說在最新版本的tinker中新增了定時輪詢,沒去了解,小夥伴們可以自己試試。
撒有啦啦!!!
記一次ES整合logstash所遇的坑
安裝與es版本的相同的logstash,例 es版本為6.2.1,那麼logstash的版本需保持一致。解壓安裝,結業完成後的目錄如下 驗證ruby是否安裝成功 ruby v安裝logstash input jdbc外掛程式,注意進入logstash的bin目錄,執行下列命令 logstash pl...
hibernate和spring整合總結
一 datasource基礎 1 jdbctemplate包裝了增刪改查方法 dao類繼承jdbcdaosupport,可以通過getjdbctemplate 方法獲得jdbctemplate,配置的時候需要引入datasource dao類繼承jdbctemplate,則可以直接使用增刪改查,配置...
Spring和Mybatis整合的踩坑之路
萬用字元的匹配很全面,但無法找到元素 context property placeholder 的宣告 在spring配置檔案中出現萬用字元的匹配很全面,但無法找到元素 context property placeholder 的宣告這個錯誤,其實主要是我們在引入命名空間時沒有正確引入它的dtd解析...