Need help with tinker?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

16.1K Stars 3.2K Forks Other 730 Commits 424 Opened issues


Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.

Services available


Need anything else?

Contributors list


license Release Version PRs Welcome WeChat Approved

Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk.


Getting started

Add tinker-gradle-plugin as a dependency in your main

in the root of your project:
buildscript {
    dependencies {
        classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1')

Then you need to "apply" the plugin and add dependencies by adding the following lines to your

dependencies {
    //optional, help to generate the final application
    //tinker's main Android lib
apply plugin: 'com.tencent.tinker.patch'

If your app has a class that subclasses, then you need to modify that class, and move all its implements to SampleApplicationLike rather than Application:

-public class YourApplication extends Application {
+public class SampleApplicationLike extends DefaultApplicationLike {

Now you should change your

class, make it a subclass of TinkerApplication. As you can see from its API, it is an abstract class that does not have a default constructor, so you must define a no-arg constructor:
public class SampleApplication extends TinkerApplication {
    public SampleApplication() {
        //tinkerFlags, which types is supported
        //dex only, library only, all support
        // This is passed as a string so the shell application does not
        // have a binary dependency on your ApplicationLifeCycle class.


to generate your
is recommended, you just need to add an annotation for your SampleApplicationLike class
application = "",             //application name to generate
flags = ShareConstants.TINKER_ENABLE_ALL)                                //tinkerFlags above
public class SampleApplicationLike extends DefaultApplicationLike

How to install tinker? learn more at the sample SampleApplicationLike.

For proguard, we have already made the proguard config automatic, and tinker will also generate the multiDex keep proguard file for you.

For more tinker configurations, learn more at the sample app/build.gradle.

Ark Support

How to run tinker on the Ark?

building patch

Just use the following command:

bash old=xxx new=xxx
indicates the absolute path of android apk(not compiled by Ark) with bugs *
indicates the absolute path of android apk(not compiled by Ark) with fixing

The patch file is packaged in APK.

compiling in Ark


At present it's compiled by Ark compiler team. The output patch is still packaged in APK format without signature.

packaging the patch

For tinker-cli, add the following lines to your

. Otherwise, the default configure will be used.

            // path of patch
         // name of patch

For gradle, add the following lines to your
. Otherwise, the default configure will be used.
ark {
   path = "arkHot"         // path of patch
   name = "patch.apk"      // name of patch
The patch is compiled by Ark and placed on the above path. all subsequent operations are same as tinker-cli or gradle.

The ultimated patch APK consists of two patch files:

  • classes.dex
    for android
  • patch.apk
    with so for Ark.

Tinker Known Issues

There are some issues which Tinker can't dynamic update.

  1. Can't update AndroidManifest.xml, such as add Android Component.
  2. Do not support some Samsung models with os version android-21.
  3. Due to Google Play Developer Distribution Agreement, we can't dynamic update our apk.

Tinker Support

Any problem?

  1. Learn more from tinker-sample-android.
  2. Read the source code.
  3. Read the wiki or FAQ for help.
  4. Contact us for help.


For more information about contributing issues or pull requests, see our Tinker Contributing Guide.


Tinker is under the BSD license. See the LICENSE file for details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.