1. 程式人生 > >熱修復Tinker簡單接入

熱修復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,然後測試,重新打包併發布。這樣帶來的問題就是成本高,效率低。於是,熱  修復就應運而生.一般通過事先設定的介面從