熱修復Tinker簡單接入
一、Gradle方式接入:
1.專案的build.gradle 下引入依賴:
dependencies {
classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.7')
}
2、app module的build.gradle中,新增tinker的庫依賴以及apply tinker的gradle外掛
dependencies {
//可選,用於生成application類
provided('com.tencent.tinker:tinker-android-anno:1.7.7' )
//tinker的核心庫
compile('com.tencent.tinker:tinker-android-lib:1.7.7')
}
3.繼承ApplicationLike類,注意@DefaultLifeCycle註解中設定Application的名稱,並且AndroidManifest.xml中引用該Application
@DefaultLifeCycle(application = "com.ider.testview.SampleApplication",
flags = ShareConstants.TINKER_ENABLE_ALL,
loadVerifyFlag = false )
public class SimpleApplicationLike extends ApplicationLike {
// 此處省略構造方法
@Override
public void onBaseContextAttached(Context base) {
super.onBaseContextAttached(base);
}
@Override
public void onCreate() {
super.onCreate();
TinkerInstaller.install(this );
}
}
4.編輯app/build.gradle
apply plugin: 'com.tencent.tinker.patch'
tinkerPatch {
// 有問題的apk地址
oldApk = "D://app-debug.apk"
ignoreWarning = false
useSign = true
buildConfig {
tinkerId = "1.0"
}
dex {
dexMode = "jar"
pattern = ["class*.dex", "assets/secondary-dex-?.jar"]
loader = ["com.tencent.tinker.loader.*", "com.ider.testview.SampleApplication"]
}
lib{
pattern = ["lib/armeabi/*.so", "lib/arm64-v8a/*.so", "lib/armeabi-v7a/*.so", "lib/mips/*.so", "lib/mips64/*.so", "lib/x86/*.so", "lib/x86_64/*.so"]
}
res {
pattern = ["res/*", "assets/*", "resources.arsc", "AndroidManifest.xml"]
largeModSize = 100
}
sevenZip {
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
}
}
5.
此處注意:
注意環境變數中gradle版本,如果使用2.2.0+的外掛版本,那麼gradle版本要使用2.14.1,並且java版本要為jdk1.8,環境變數中JAVA_HOME和JRE_HOME都要設定為1.8的,否則無法通過gradle編譯
useSign = true。設為false時,不對差分包進行簽名,會導致差分包與基準包簽名不同,無法更新
- oldApk: 設定oldApk的路徑,不要設定為AndroidStudio自動生成apk的路徑。gradle在製作差分包時,先對更新後的程式碼進行編譯生成新的apk,會替換掉oldApk,導致newApk和oldApk完全相同,從而生成錯誤的差分包,無法更新
- tinker_id是用來標記基礎包的,一定要相同。在編譯oldApk時,會自動讀取tinkerId並將此id寫入AndroidManifest.xml
(路徑app\build\intermediates\tinker_intermediates\AndroidManifest.xml)中,例如tinkerid =1.0, AndroidManifest.xml中會新增一條
<meta-data android:name="TINKER_ID" android:value="tinker_id_1.0"/>
應用做的版本升級,但是沒有更新tinkerID,會導致新版本載入舊版本的補丁。
- 接上面tinkerID繼續,如果基礎版本是tinkerID=1.0,釋出一個tinkerPatch的tinkerID=2.0,那麼2.0會儲存在package_mete.xml的NEW_TINKER_ID中,此值並沒有被用到,注意此時TINKER_ID依然為1.0,並沒有因為打上patch而變為2.0。你依然可以在tinkerid=1.0的oldApk上繼續釋出3.0的patch,更新成功後NEW_TINKER_ID變為3.0, 而TINKER_ID依然是1.0。即:基於同一個基礎包的修復patch可多次釋出
Demo地址 : https://github.com/ericzhaowei/testtinker.git
二、命令列方式接入
1、1,2,3步相同
2、第4步省略,改為配置tinker_config.xml,tinker_config.xml中要修改應用Application的完整包名。
3、AndroidManifest.xml中手動設定thinkerId
<meta-data
android:name="TINKER_ID"
android:value="tinker_id_1.0" />
使用如下命令進行差分包生成:
java -jar tinker-patch-cli-1.7.7.jar -old old.apk -new new.apk -config tinker_config.xml -out output
相關推薦
熱修復Tinker簡單接入
一、Gradle方式接入: 1.專案的build.gradle 下引入依賴: dependencies { classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.7
Android 熱修復 Tinker接入及源碼淺析
uil obj 安全 Language num sse b2c rom 其中 一、概述 放了一個大長假,happy,先祝大家2017年笑口常開。 假期中一行代碼沒寫,但是想著馬上要上班了,趕緊寫篇博客回顧下技能,於是便有了本文。 熱修復這項技術,基本上已經成為項目比較
[Android]騰訊Tinker熱修復框架簡單使用
前言目前我們所知的熱修復方案有阿里的AndFix、美團的Robust以及QZone的超級補丁方案,還有本篇的Tinker,如何在我們的自開發的軟體上選用合適的方案呢?先看看各家的框架效能對比,在作參考。總體來說:AndFix作為native解決方案,首先面臨的是穩定性與相容性
Tinker熱修復(gradle接入--成功)
官方的接入指南真的很坑,對於沒有用過AndFix的人來說,可以說是一頭霧水,我到現在也不知道命令列接入的.jar檔案是在哪下載的。這裡講解一下gradle接入,經測試.java檔案可以實現完美接入,命令列接入的BUG完美繞過。(application的設定,和patch
Tinker 熱修復框架 簡單上手教程
導言 前不久,騰訊推出了”微信小程式”這一概念,對移動原生應用的影響可謂巨大.而幾乎就在同時, 騰訊在GitHub上開源了第一個專案Tinker, 這是一個Android平臺的應用熱修復框架.可以在不重新安裝應用的情況下,對應用的程式碼/庫 /資源進行更
Android 熱修復 Tinker接入
新建專案,新增gradle依賴在專案的 build.gradle 中,新增tinker-patch-gradle-plugin的依賴 buildscript { repositories { jcenter() } dep
Sophix熱修復的簡單使用
所有的步驟都是通過阿里雲的介面文件來寫的,其實很簡單。按照步驟一步一步進行就可以了。 1.我的專案的gradle寫法: // Top-level build file where you can add configuration options common to al
熱修復Tinker的使用方法
1、專案的build.gradle中新增 classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1') 2、APP的build.gradle: (1)、新增依賴 (2)、添加簽名資
Bugly熱修復 Android SDK接入
首先為什麼要整合bugly熱修復。市面上有其他的熱修復框架,為什麼就用bugly?這裡給出2張圖大家就明白了。 引用騰訊bugly官網的一段話: 無需關注Tinker是如何合成補丁的無需自己搭建補丁管理後臺無需考慮後臺下發補
熱修復——Tinker 的整合與使用
作者 | CSDN_LQR地址 | https://juejin.im/post/5a27bda
Android熱修復AndFix簡單使用
1.新增依賴 compile 'com.alipay.euler:andfix:[email protected]' 2.新增混淆 -keep class * extends java.l
最新微信Tinker 熱修復平臺接入教程(超詳細)
目錄 Tinker接入文件 1 Tinker簡介 1.1Tinker優點 1.2 Tinker缺點 1.Tinker不支援修改AndroidManifest.xml,Tinker不支援新增四大元件(1.9.0支援新增非export的A
android 熱修復框架Tinker的詳細簡單使用
Tinker 騰訊開源熱修復框架,https://github.com/Tencent/tinker 已知的的問題 Tinker不支援修改AndroidManifest.xml,Tinker不支援新增四大元件(1.9.0支援新增非export的Activ
Tinker熱修復接入詳解(入坑並出坑篇)
注:當然一開始要參考Tinker的詳細說明,連結如下: https://github.com/Tencent/tinker/wiki 下面就是我自己一步一步操作,並完成接入Tinker,而且入坑並出坑的過程。 一:android studio自己建立個工程 二:工程的b
Tinker熱修復框架接入
Tinker熱修復框架接入 Android現在開發App基本都開始接入熱修復框架,為的就是能夠修復一些線上緊急Bug。熱門的熱修復框架以及對比,網上介紹的也很多,個人而言就用過騰訊的tinker以及阿里的sophix。 騰訊tinkerTinker簡介,根據官方文件接入tinke
Android studio3.0 命令列方式簡單整合騰訊Tinker熱修復外掛
簡介: 關於熱修復的介紹現在網上有很多,所以在此我就不過多BB,此篇部落格的特點有兩個,首先,這是一個針對Android studio3.0使用者的部落格,其次,這裡採用的是命令列的方式,這是方式在工作中並不經常使用,相反,在工作中基本都是使用gradle配置的方式,但是命
基於AndFix的熱修復 成功後簡單的總結總結錯失
-a 需求 style not alt eth 20px extends ble 首先了解熱修復是什麽東西?? 就我自己簡單的理解:就是不須要又一次打包 公布到市場 然後再讓用戶又一次下載就能夠把一些小bug和需求通過補丁的形式進行改動。 然後如今的熱修復方式有
淺談熱修復QZone 、 阿里的AndFix 、 騰訊的Tinker
目前熱修復的技術基本上有 QZone 、 阿里的AndFix 、 騰訊的Tinker 等。 下面我們簡單介紹下這幾種熱修復方案: QZone 採用的是dex分包方案,多dex載入原
Android Mobile Hotfix(阿里雲——移動熱修復接入)
首先你需要註冊並登陸 阿里雲移動研發平臺,檢視官方文件,下載SDK等,整合過程並不複雜。本文主要記錄接入流程跟遇到的問題 什麼是熱修復 熱修復,是一種使用補丁來更新修復的手段。不需要通過重新發布App,下載安裝等一系列繁瑣的過程。 熱修復原理 總結參考文件,修復框架很多,但熱修復
Android 熱修復其實很簡單
一、什麼是熱修復 熱修復說白了就是”打補丁”,比如你們公司上線一個app,使用者反應有重大bug,需要緊急修復。如果按照通 常做法,那就是程式猿加班搞定bug,然後測試,重新打包併發布。這樣帶來的問題就是成本高,效率低。於是,熱 修復就應運而生.一般通過事先設定的介面從