模块 | 最新版本 |
---|---|
cfix | |
cfix-gradle |
cfix 是一个基于 QQ 空间热修复方案打造的 Android 热修复框架。
大量参考了 Nuwa,可以说是 Nuwa 的衍生版,感谢 Nuwa 作者。
- 全面支持 Gradle 1.5.0-3.x 版本
- 支持除 Application 之外的所有代码增删改
- 不支持 AndroidManifest,因此不支持新增四大组件
- 不支持资源修复
- 支持补丁签名验证
v1.1
- 新增支持 Gradle 3.x 版本
v1.0
- 第一个版本
- Add gradle dependency
// root project build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'me.wcy:cfix-gradle:1.1'
}
}
- Add library dependency & apply plugin
// module build.gradle
apply plugin: 'com.android.application'
apply plugin: 'me.wcy.cfix'
...
dependencies {
...
compile 'me.wcy:cfix:1.0'
}
- Config
// module build.gradle
...
apply plugin: 'me.wcy.cfix'
cfix {
includePackage = ['me/wcy/cfix/sample']
excludeClass = ['me/wcy/cfix/sample/Exclude']
debugOn = true
sign = true
storeFile = file("release.jks")
storePassword = 'android'
keyAlias = 'cfix'
keyPassword = 'android'
}
...
参数说明
参数名 | 作用 | 是否必须 | 备注 |
---|---|---|---|
includePackage | 热修复包含的包名 | 否 | 如果不设置,默认将包含所有类,包括依赖的第三方库。建议设置为应用包名,如 ['me/wcy/cfix/sample', ...] |
excludeClass | 热修复需要排除的类名 | 否 | 如果不设置将不排除任何类。示例 ['me/wcy/cfix/sample/Exclude', ...] |
debugOn | Debug 模式是否开启热修复 | 否 | 默认打开 |
sign | 是否对 Patch 签名 | 否 | 默认关闭。如果开启签名,则需要配置以下4项,且需要和 APK 签名一致 |
storeFile | 签名文件 | 否 | 参考 signingConfigs |
storePassword | 密钥库密码 | 否 | |
keyAlias | 证书别名 | 否 | |
keyPassword | 证书密钥 | 否 |
- Init CFix in you Application
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
CFix.init(this);
}
- Load the patch file
CFix.loadPatch(patchFile, verify);
Keep cfix library
-keep class me.wcy.cfix.lib.** { *; }
- 打包后保存 CFix 输出文件,作为 Patch 的基准,位于
module/build/outputs/cfix
这里我们将 cfix 文件夹复制到 module 根目录
- 制作 Patch
Run in terminal
./gradlew clean cfix${variant.name.capitalize()}Patch -P cfixDir=CFIX_OUTPUT_DIR
例如
./gradlew clean cfixDebugPatch -P cfixDir=/Users/wcy/Files/Android/AndroidStudioProjects/cfix/sample/cfix/
生成的 Patch 文件位于
module/build/outputs/cfix/${variant.dirName}/patch.jar
更多用法请参考 Sample
掘金:https://juejin.im/user/2313028193754168
微博:https://weibo.com/wangchenyan1993
Copyright 2017 wangchenyan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.