- 在项目 build.gradle 中添加
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.meituan.robust:gradle-plugin:0.4.71'
classpath 'com.meituan.robust:auto-patch-plugin:0.4.71'
}
}
- 应用插件 robust/auto-patch-plugin
打包 apk 时只使用 robust
自动打包 patch 时只使用 auto-patch-plugin
apply plugin: 'com.android.application'
//制作补丁时将这个打开,auto-patch-plugin紧跟着com.android.application
//apply plugin: 'auto-patch-plugin'
apply plugin: 'robust'
- 添加依赖
compile 'com.meituan.robust:robust:0.4.71'
- 拷贝 robust.xml 配置文件到 app/robust.xml
按需修改。
注意: 这两部分保留,不需要修改
<exceptPackname name="exceptPackage">
<name>com.meituan.robust</name>
</exceptPackname>
<patchPackname name="patchPackname">
<name>com.meituan.robust.patch</name>
</patchPackname>
- 实现自己的
PatchManipulate类
注意: 这行不需要修改,不需要自己实现PatchesInfoImpl类
patch.setPatchesInfoImplClassFullName("com.meituan.robust.patch.PatchesInfoImpl");
- build.gradle 中应用 robust 插件,使用 gradle 打包 apk
/gradlew clean assembleRelease --stacktrace --no-daemon
- 拷贝
mapping.txt和methodsMap.robust到app/robust/目录
mkdir app/robust/
cp app/build/outputs/mapping/release/mapping.txt app/robust/
cp app/build/outputs/robust/methodsMap.robust app/robust/
-
修改代码 使用
@Modify和@Add标签 -
build.gradle中应用auto-patch-plugin插件,打包patch.jar
./gradlew clean assembleRelease --stacktrace --no-daemon
- push
patch.jar到PatchManipulateImpl.java中指定的 patch 位置
adb push app/build/outputs/robust/patch.jar /storage/emulated/0/robust/patch.jar
new PatchExecutor(getApplicationContext(), new PatchManipulateImp(), new RobustCallBackImp()).start();
- 没有生成 mapping.txt 文件
app/build.gradle 中虽然定义了 proguard 文件,但是 minifyEnabled 没有置为 true
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
- 无法安装,或安装后打开闪退
没有签名
- 找不到 patch.jar 文件
可能没有添加读写权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />