Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

License

NotificationsYou must be signed in to change notification settings

Tencent/tinker

Repository files navigation

licenseRelease VersionPRs WelcomeWeChat Approved

中文说明

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

tinker.png

Getting started

Add tinker-gradle-plugin as a dependency in your mainbuild.gradle 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 yourapp/build.gradle.

dependencies {//optional, help to generate the final application    provided('com.tencent.tinker:tinker-android-anno:1.9.1')//tinker's main Android lib    compile('com.tencent.tinker:tinker-android-lib:1.9.1')}......applyplugin:'com.tencent.tinker.patch'

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

-publicclassYourApplicationextendsApplication {+publicclassSampleApplicationLikeextendsDefaultApplicationLike {

Now you should change yourApplication class, make it a subclass ofTinkerApplication. 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:

publicclassSampleApplicationextendsTinkerApplication {publicSampleApplication() {super(//tinkerFlags, which types is supported//dex only, library only, all supportShareConstants.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");    }}

Usetinker-android-anno to generate yourApplication is recommended, you just need to add an annotation for yourSampleApplicationLike class

@DefaultLifeCycle(application ="tinker.sample.android.app.SampleApplication",//application name to generateflags =ShareConstants.TINKER_ENABLE_ALL)//tinkerFlags abovepublicclassSampleApplicationLikeextendsDefaultApplicationLike

How to install tinker? learn more at the sampleSampleApplicationLike.

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 sampleapp/build.gradle.

Ark Support

How to run tinker on the Ark?

building patch

Just use the following command:

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

The patch file is packaged in APK.

compiling in Ark

TODO

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 yourtinker_config.xml. Otherwise, the default configure will be used.

<issueid="arkHot">   <pathvalue="arkHot"/>         // path of patch   <namevalue="patch.apk"/>      // name of patch</issue>

For gradle, add the following lines to yourapp/build.gradle. 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 fromtinker-sample-android.
  2. Read thesource code.
  3. Read thewiki orFAQ for help.
  4. Contact us for help.

Contributing

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

License

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

About

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

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp