中文说明
TinkerはAndroid用のホットフィックスソリューションライブラリであり、APKを再インストールせずにDEX、ライブラリ、リソースの更新をサポートしています。
メインbuild.gradle
の依存関係としてTinker-Gradle-Pluginを追加します。
buildscript {
dependencies {
classpath ( ' com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1 ' )
}
}
次に、 app/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 ' )
}
.. .
.. .
apply plugin : ' com.tencent.tinker.patch '
アプリにAndroid.App.Applicationをサブクラス化するクラスがある場合、そのクラスを変更し、アプリケーションではなくすべての実装をサンプリングリケーションに移動する必要があります。
- public class YourApplication extends Application {
+ public class SampleApplicationLike extends DefaultApplicationLike {
これで、 Application
クラスを変更し、TinkerApplicationのサブクラスにする必要があります。 APIからわかるように、デフォルトのコンストラクターがない抽象クラスであるため、ARGノーコンストラクターを定義する必要があります。
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-anno
を使用してApplication
生成することをお勧めします。SampleapplicationLikeクラスに注釈を追加するだけです
@ DefaultLifeCycle (
application = "tinker.sample.android.app.SampleApplication" , //application name to generate
flags = ShareConstants . TINKER_ENABLE_ALL ) //tinkerFlags above
public class SampleApplicationLike extends DefaultApplicationLike
ティンカーをインストールする方法は?詳細については、SampleApplicationLikeでご覧ください。
Proguardの場合、Proguard Config Automaticを既に作成しており、TinkerはMultidex Keep Proguardファイルも生成します。
その他のティンカー構成については、サンプルアプリ/build.gradleで詳細をご覧ください。
箱舟でティンカーを走らせる方法は?
次のコマンドを使用するだけです。
bash build_patch_dexdiff.sh old=xxx new=xxx
old
バグ付きのAndroid APK(ARKで編集されていない)の絶対パスを示していますnew
Android APK(ARKで編集されていない)の絶対パスを修正しますパッチファイルはAPKにパッケージ化されています。
トト
現在、Ark Compiler Teamによって編集されています。出力パッチは、署名なしで引き続きAPK形式でパッケージ化されています。
Tinker-Cliについては、次の行をtinker_config.xml
に追加します。それ以外の場合、デフォルトの構成が使用されます。
< issue id = " arkHot " >
< path value = " arkHot " /> // path of patch
< name value = " patch.apk " /> // name of patch
</ issue >
Gradleについては、次の行をapp/build.gradle
に追加します。それ以外の場合、デフォルトの構成が使用されます。
ark {
path = " arkHot " // path of patch
name = " patch.apk " // name of patch
}
パッチは箱舟でコンパイルされ、上のパスに配置されます。後続のすべての操作は、Tinker-CliまたはGradleと同じです。
究極のパッチAPKは、2つのパッチファイルで構成されています。
classes.dex
patch.apk
。 Tinkerが動的な更新ができないいくつかの問題があります。
何か問題がありますか?
貢献の問題やプルリクエストの詳細については、Tinker Contributing Guideを参照してください。
TinkerはBSDライセンスの下にあります。詳細については、ライセンスファイルを参照してください。