网站开发 入门 pdf,淘宝客网站如何备案,优秀网站建设最新报价,微信用大型网站站做跳板最近公司项目渐趋成熟#xff0c;已经不需要经常更新版本#xff0c;并且更新版本对客户的影响特别大#xff0c;但是日常维护难免需要更新代码#xff0c;因此热修复的技术#xff0c;就比较迫切了。 经过一段时间的对比#xff0c;我们最终决定使用阿里的Sophix方案已经不需要经常更新版本并且更新版本对客户的影响特别大但是日常维护难免需要更新代码因此热修复的技术就比较迫切了。 经过一段时间的对比我们最终决定使用阿里的Sophix方案因为它实在是太强大而且接入及其简单。 阿里网址如下阿里云登录 - 欢迎登录阿里云安全稳定的云计算服务平台 应用申请这些因为过于简单我这里就不说了直接上代码
1、引入官方库在app的build.gradle下直接插入 compile com.aliyun.ams:alicloud-android-hotfix:3.3.5
2、心间自定义Application文件名为SophixStubApplication继承自SophixApplication代码如下
public class SophixStubApplication extends SophixApplication {private final String TAG SophixStubApplication;// 此处SophixEntry应指定真正的Application并且保证RealApplicationStub类名不被混淆。KeepSophixEntry(自定义的Application.class)static class RealApplicationStub {}Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);
// 如果需要使用MultiDex需要在此处调用。MultiDex.install(this);initSophix();}private void initSophix() {String appVersion 0.0.0;try {appVersion this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;} catch (Exception e) {}final SophixManager instance SophixManager.getInstance();instance.setContext(this).setUsingEnhance() // 适配加固模式,如果app使用了加固则需要加上此方法.setAppVersion(appVersion).setSecretMetaData(null, null, null).setEnableDebug(true).setEnableFullLog().setPatchLoadStatusStub(new PatchLoadStatusListener() {Overridepublic void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {if (code PatchStatus.CODE_LOAD_SUCCESS) {Log.i(TAG, sophix load patch success!);} else if (code PatchStatus.CODE_LOAD_RELAUNCH) {// 如果需要在后台重启建议此处用SharePreference保存状态。Log.i(TAG, sophix preload patch success. restart app to make effect.);}}}).initialize();instance.queryAndLoadNewPatch();}
}
简单说一下这里基本是固定格式最重要的代码是
instance.queryAndLoadNewPatch();
顾名思义查询并加载新的补丁。这个一定要调用的不然无法加载补丁记得把SophixStubApplication注册到AndroidManifest.xml中举个例子 applicationandroid:namexxxxxx.SophixStubApplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:maxAspectRatio2.4android:resizeableActivitytrueandroid:supportsRtltrueandroid:themestyle/AppThemeandroid:usesCleartextTraffictruemeta-dataandroid:namecom.taobao.android.hotfix.IDSECRETandroid:value /meta-dataandroid:namecom.taobao.android.hotfix.APPSECRETandroid:value /meta-dataandroid:namecom.taobao.android.hotfix.RSASECRETandroid:value //application
这样一套下来阿里云热修复就已经成功集成到app中。
接再来再说说一些注意事项
1、不能热更新的场景 1、新增四大组件 2)、修改了SophixStubApplication的内容 3、修改了AndroidManifest.xml的内容 4、其他配置文件 除此之外其他的一切皆可更新包括.so文件
2、关于加固的app如果采用了加固去打补丁的时候一定要拿未加固前的apk去操作否则无法加固