Tinker
Tinker是一个Android热修复解决方案库,它支持无安装apk的DEX,库和资源更新。
入门
将 tinker-gradle-plugin 作为一个依赖添加到项目的根目录的主要build.gradle中。
buildscript {
dependencies {
classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.7.5')
}
}
然后你需要应用这个插件并通过在app/build.gradle中添加下列内容来应用插件:
dependencies {
//optional, help to generate the final application
provided('com.tencent.tinker:tinker-android-anno:1.7.5')
//tinker's main Android lib
compile('com.tencent.tinker:tinker-android-lib:1.7.5')
}
...
...
apply plugin: 'com.tencent.tinker.patch'
如果你的app中有一个 android.app.Application的子类,那么你需要修改这个类,并将它的所有实现方案移动到SampleApplicationLike中:
-public class YourApplication extends Application {
+public class SampleApplicationLike extends DefaultApplicationLike {
现在你需要改变你的 Application类,将它作为TinkerApplication的子类。 正如你从这个API中所看到的,它是一个没有默认构造函数的抽象类,所以你必须定义一个无参数的构造函数:
public class SampleApplication extends TinkerApplication {
public SampleApplication() {
super(
//tinkerFlags, which types is supported
//dex only, library only, all support
ShareConstants.TINKER_ENABLE_ALL,
// This is passed as a string so the shell application does not
// have a binary dependency on your ApplicationLifeCycle class.
"tinker.sample.android.app.SampleApplicationLike");
}
}
推荐使用tinker-android-annoto 来生成Applicationis ,你只需要为你的SampleApplicationLike类添加注释即可:
@DefaultLifeCycle(
application = "tinker.sample.android.app.SampleApplication", //application name to generate
flags = ShareConstants.TINKER_ENABLE_ALL) //tinkerFlags above
public class SampleApplicationLike extends DefaultApplicationLik