中文说明
Tinker ist eine Hot-Fix-Lösungsbibliothek für Android. Sie unterstützt Dex-, Bibliotheks- und Ressourcen-Update, ohne APK neu zu installieren.
Fügen Sie Tinker-Gradle-Plugin als Abhängigkeit in Ihrem Hauptaufbau hinzu build.gradle
in der Wurzel Ihres Projekts:
buildscript {
dependencies {
classpath ( ' com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1 ' )
}
}
Anschließend müssen Sie das Plugin "anwenden" und Abhängigkeiten hinzufügen, indem Sie Ihren app/build.gradle
die folgenden Zeilen hinzufügen.
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 '
Wenn Ihre App über eine Klasse verfügt, in der Android.App.Application unterklassiktt, müssen Sie diese Klasse ändern und alle ihre Geräte auf Stichprobenesportlikationen und nicht auf Anwendung verschieben:
- public class YourApplication extends Application {
+ public class SampleApplicationLike extends DefaultApplicationLike {
Jetzt sollten Sie Ihre Application
ändern und eine Unterklasse von Tinkerapplication machen. Wie Sie aus seiner API sehen können, handelt es sich um eine abstrakte Klasse, die keinen Standardkonstruktor hat. Sie müssen also einen No-Arg-Konstruktor definieren:
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" );
}
}
Verwenden Sie tinker-android-anno
um Ihre Application
zu generieren. Es wird empfohlen. Sie müssen nur eine Annotation für Ihre sampleApplikationsähnliche Klasse hinzufügen
@ DefaultLifeCycle (
application = "tinker.sample.android.app.SampleApplication" , //application name to generate
flags = ShareConstants . TINKER_ENABLE_ALL ) //tinkerFlags above
public class SampleApplicationLike extends DefaultApplicationLike
Wie installiere ich Tinker? Erfahren Sie mehr in der Stichprobe -SampleApplikationsähnlich.
Für Proguard haben wir bereits die Proguard -Konfiguration automatisch gemacht, und Tinker generiert auch die Multidex -Heeguard -Datei für Sie.
Weitere Tinker -Konfigurationen finden Sie in der Beispiel -App/Build.gradle.
Wie fahre ich auf der Arche Tinker?
Verwenden Sie einfach den folgenden Befehl:
bash build_patch_dexdiff.sh old=xxx new=xxx
old
zeigt den absoluten Pfad von Android apk (nicht durch Arche kompiliert) mit Fehler annew
gibt den absoluten Pfad der Android -APK (nicht durch Arche zusammengestellt) mit Fixierung anDie Patch -Datei ist in APK verpackt.
Todo
Derzeit wird es vom Ark Compiler -Team zusammengestellt. Der Ausgangs Patch ist immer noch im APK -Format ohne Signatur verpackt.
Fügen Sie für Tinker-Cli die folgenden Zeilen zu Ihrem tinker_config.xml
hinzu. Andernfalls wird die Standardkonfiguration verwendet.
< issue id = " arkHot " >
< path value = " arkHot " /> // path of patch
< name value = " patch.apk " /> // name of patch
</ issue >
Fügen Sie für Gradle Ihre app/build.gradle
hinzu. Andernfalls wird die Standardkonfiguration verwendet.
ark {
path = " arkHot " // path of patch
name = " patch.apk " // name of patch
}
Der Patch wird durch Arche zusammengestellt und auf den obigen Weg platziert. Alle nachfolgenden Operationen sind gleich wie Tinker-Cli oder Gradle.
Der ultimierte Patch -APK besteht aus zwei Patch -Dateien:
classes.dex
für Androidpatch.apk
mit SO für Arche. Es gibt einige Probleme, die Tinker nicht dynamisch aktualisieren kann.
Ein Problem?
Weitere Informationen zum Beitrag zu Problemen oder Anfragen finden Sie in unserem Bastelfunktion.
Tinker steht unter der BSD -Lizenz. Weitere Informationen finden Sie in der Lizenzdatei.