[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3974":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},3974,"tinker","Tencent\u002Ftinker","Tencent","Tinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstall apk.","",null,"Java",17645,3352,682,543,0,5,19,1,45,"Other",false,"dev",true,[26,27,28,29],"android","dynamic","hotfix","wechat","2026-06-12 02:00:56","## Tinker\n[![license](http:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-BSD3-brightgreen.svg?style=flat)](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002FLICENSE)\n[![Release Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frelease-1.9.15.1-red.svg)](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Freleases)\n[![PRs Welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-brightgreen.svg)](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fpulls)\n[![WeChat Approved](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FWechat_Approved-1.9.15.1-red.svg)](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fwiki)\n\n[中文说明](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fwiki)\n\nTinker is a hot-fix solution library for Android, it supports dex, library and resources update without reinstalling apk.\n\n![tinker.png](assets\u002Ftinker.png)\n\n## Getting started\nAdd tinker-gradle-plugin as a dependency in your main `build.gradle` in the root of your project:\n\n```gradle\nbuildscript {\n    dependencies {\n        classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1')\n    }\n}\n```\n\nThen you need to \"apply\" the plugin and add dependencies by adding the following lines to your `app\u002Fbuild.gradle`.\n\n```gradle\ndependencies {\n    \u002F\u002Foptional, help to generate the final application\n    provided('com.tencent.tinker:tinker-android-anno:1.9.1')\n    \u002F\u002Ftinker's main Android lib\n    compile('com.tencent.tinker:tinker-android-lib:1.9.1')\n}\n...\n...\napply plugin: 'com.tencent.tinker.patch'\n```\n\nIf your app has a class that subclasses android.app.Application, then you need to modify that class, and move all its implements to [SampleApplicationLike](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002Ftinker-sample-android\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Ftinker\u002Fsample\u002Fandroid\u002Fapp\u002FSampleApplicationLike.java) rather than Application:\n\n```java\n-public class YourApplication extends Application {\n+public class SampleApplicationLike extends DefaultApplicationLike {\n```\n\nNow you should change your `Application` class, make it a subclass of [TinkerApplication](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002Ftinker-android\u002Ftinker-android-loader\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Ftencent\u002Ftinker\u002Floader\u002Fapp\u002FTinkerApplication.java). 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:\n\n```java\npublic class SampleApplication extends TinkerApplication {\n    public SampleApplication() {\n      super(\n        \u002F\u002FtinkerFlags, which types is supported\n        \u002F\u002Fdex only, library only, all support\n        ShareConstants.TINKER_ENABLE_ALL,\n        \u002F\u002F This is passed as a string so the shell application does not\n        \u002F\u002F have a binary dependency on your ApplicationLifeCycle class.\n        \"tinker.sample.android.app.SampleApplicationLike\");\n    }\n}\n```\n\nUse `tinker-android-anno` to generate your `Application` is recommended, you just need to add an annotation for your [SampleApplicationLike](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002Ftinker-sample-android\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Ftinker\u002Fsample\u002Fandroid\u002Fapp\u002FSampleApplicationLike.java) class\n\n```java\n@DefaultLifeCycle(\napplication = \"tinker.sample.android.app.SampleApplication\",             \u002F\u002Fapplication name to generate\nflags = ShareConstants.TINKER_ENABLE_ALL)                                \u002F\u002FtinkerFlags above\npublic class SampleApplicationLike extends DefaultApplicationLike\n```\n\nHow to install tinker? learn more at the sample [SampleApplicationLike](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002Ftinker-sample-android\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Ftinker\u002Fsample\u002Fandroid\u002Fapp\u002FSampleApplicationLike.java).\n\nFor proguard, we have already made the proguard config automatic, and tinker will also generate the multiDex keep proguard file for you.\n\nFor more tinker configurations, learn more at the sample [app\u002Fbuild.gradle](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002Ftinker-sample-android\u002Fapp\u002Fbuild.gradle).\n\n## Ark Support\nHow to run tinker on the Ark?\n### building patch\nJust use the following command:\n```buildconfig\nbash build_patch_dexdiff.sh old=xxx new=xxx\n```\n* `old` indicates the absolute path of android apk(not compiled by Ark) with bugs\n* `new` indicates the absolute path of android apk(not compiled by Ark) with fixing\n\nThe patch file is packaged in APK.\n### compiling in Ark\nTODO\n\nAt present it's compiled by Ark compiler team. The output patch is still packaged in APK format without signature.\n### packaging the patch\nFor tinker-cli, add the following lines to your `tinker_config.xml`. Otherwise, the default configure will be used.\n```xml\n\u003Cissue id=\"arkHot\">\n   \u003Cpath value=\"arkHot\"\u002F>         \u002F\u002F path of patch\n   \u003Cname value=\"patch.apk\"\u002F>      \u002F\u002F name of patch\n\u003C\u002Fissue>\n```\nFor gradle, add the following lines to your `app\u002Fbuild.gradle`. Otherwise, the default configure will be used.\n```gradle\nark {\n   path = \"arkHot\"         \u002F\u002F path of patch\n   name = \"patch.apk\"      \u002F\u002F name of patch\n}\n```\nThe patch is compiled by Ark and placed on the above path. all subsequent operations are same as tinker-cli or gradle.\n\nThe ultimated patch APK consists of two patch files:\n\n* `classes.dex` for android\n* `patch.apk` with so for Ark.\n\n## Tinker Known Issues\nThere are some issues which Tinker can't dynamic update.\n\n1. Can't update AndroidManifest.xml, such as add Android Component.\n2. Do not support some Samsung models with os version android-21.\n3. Due to Google Play Developer Distribution Agreement, we can't dynamic update our apk.\n\n## Tinker Support\nAny problem?\n\n1. Learn more from [tinker-sample-android](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Ftree\u002Fmaster\u002Ftinker-sample-android).\n2. Read the [source code](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Ftree\u002Fmaster).\n3. Read the [wiki](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fwiki) or [FAQ](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fwiki\u002FTinker-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98) for help.\n4. Contact us for help.\n\n## Contributing\nFor more information about contributing issues or pull requests, see our [Tinker Contributing Guide](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002FCONTRIBUTING.md).\n\n## License\nTinker is under the BSD license. See the [LICENSE](https:\u002F\u002Fgithub.com\u002FTencent\u002Ftinker\u002Fblob\u002Fmaster\u002FLICENSE) file for details.\n","Tinker 是一个针对 Android 应用的热修复解决方案库，支持在不重新安装 APK 的情况下更新 dex 文件、库文件和资源。其核心功能包括动态加载补丁来修复线上应用的问题，无需用户手动更新应用版本。技术上，Tinker 通过替换或新增类与资源实现热更新，并且提供了详细的文档指导开发者如何集成到现有项目中。适合用于需要快速响应并修复已发布应用中的错误或性能问题的场景，尤其适用于那些对用户体验有高要求的应用程序开发团队。",2,"2026-06-11 02:57:32","top_language"]