中文说明
Tinker는 Android 용 핫픽스 솔루션 라이브러리이며 APK를 다시 설치하지 않고 DEX, 라이브러리 및 리소스 업데이트를 지원합니다.
주요 build.gradle
의 종속성으로 Tinker-Gradle-Plugin을 프로젝트의 루트에있는 Gradle을 추가하십시오.
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
클래스를 변경하여 땜장이 적응증의 서브 클래스로 만들어야합니다. 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
생성하는 것이 좋습니다. 샘플 보충과 같은 클래스에 주석을 추가하면됩니다.
@ DefaultLifeCycle (
application = "tinker.sample.android.app.SampleApplication" , //application name to generate
flags = ShareConstants . TINKER_ENABLE_ALL ) //tinkerFlags above
public class SampleApplicationLike extends DefaultApplicationLike
Tinker를 설치하는 방법? 샘플 샘플 보충과 같은 자세한 내용은 자세히 알아보십시오.
Proguard의 경우 이미 Proguard Config를 자동으로 만들었으며 Tinker는 Multidex Keep Proguard 파일을 생성합니다.
더 많은 땜장이 구성을 보려면 샘플 앱/build.gradle에서 자세히 알아보십시오.
방주에서 Tinker를 실행하는 방법?
다음 명령 만 사용하십시오.
bash build_patch_dexdiff.sh old=xxx new=xxx
old
버그로 Android APK (Ark에 의해 컴파일되지 않음)의 절대 경로를 나타냅니다.new
고정과 함께 Android APK (Ark에 의해 편집되지 않음)의 절대 경로를 나타냅니다.패치 파일은 APK로 포장되어 있습니다.
TODO
현재 Ark 컴파일러 팀이 컴파일했습니다. 출력 패치는 여전히 서명없이 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는 두 개의 패치 파일로 구성됩니다.
classes.dex
patch.apk
. Tinker가 동적 업데이트를 할 수없는 몇 가지 문제가 있습니다.
문제가 있습니까?
기여 문제 또는 풀 요청에 대한 자세한 내용은 Tinker 기고 가이드를 참조하십시오.
Tinker는 BSD 라이센스에 따라 있습니다. 자세한 내용은 라이센스 파일을 참조하십시오.