本文介绍如何在当前 Android App 的基础上集成 mPaaS 提供的 Hotpatch 热修复功能。
目前,热修复支持原生 AAR 接入和组件化接入两种接入方式。
前置条件
若采用原生 AAR 方式接入,需要先 将mPaaS 添加到您的项目中。
若采用组件化方式接入,需要先完成 组件化接入流程。
添加 SDK
原生 AAR 方式
参考 管理组件依赖,通过 组件管理(AAR)在工程中安装 热修复(HOTFIX)组件。
组件化方式
在 Portal 和 Bundle 工程中通过 组件管理安装 热修复(HOTFIX)组件。更多信息,参考 管理组件依赖。
初始化热修复
原生 AAR 接入
如果需要使用热修复功能,您还需要完成以下两步操作。
需要将
Application
对象重新继承为QuinoxlessApplicationLike
,并注意将该类防混淆。此处以 MyApplication 为例。@Keep public class MyApplication extends QuinoxlessApplicationLike implements Application.ActivityLifecycleCallbacks { private static final String TAG = "MyApplication"; @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); Log.i(TAG, "attacheBaseContext"); } @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate"); registerActivityLifecycleCallbacks(this); } @Override public void onMPaaSFrameworkInitFinished() { MPHotpatch.init(); LoggerFactory.getTraceLogger().info(TAG, getProcessName()); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { Log.i(TAG, "onActivityCreated"); } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }
在 AndroidManifest.xml 文件中将
Application
对象指向 mPaaS 提供的Application
对象。将刚刚生成的 MyApplication 类添加到 key 为mpaas.quinoxless.extern.application
的meta-data
中。示例如下:<application android:name="com.alipay.mobile.framework.quinoxless.QuinoxlessApplication" > <meta-data android:name="mpaas.quinoxless.extern.application" android:value="com.mpaas.demo.MyApplication" /> </application>
其中
com.mpaas.demo.MyApplication
是您自定义的 Application 代理类,继承QuinoxlessApplicationLike
。
组件化接入
由于已经集成了相关内容,因此该接入方式不需要做任何变更。
生成热修复补丁
参见 生成热修复包。
发布热修复补丁
参见 发布热修复包。
触发热修复补丁
本节结合 代码示例中的 热修复示例,对热修复过程进行详细的说明介绍。
该代码示例中的修复内容是弹出的 toast 中的内容。
修复前单击 模拟需要被热修复的点击事件按钮,弹出如下图所示的 toast。
进行修复单击 触发热修复部署检测按钮,触发热修复的下载。在下载完成后,彻底关闭 Demo 应用并重新启动。
修复后单击 模拟需要被热修复的点击事件按钮,会弹出 “当前点击事件已被热修复”的 toast。
问题排查
不要使用非正规方式引入 apache-httpclient、apache-commons,具体参考 Android 应用开发者平台官方文档。
不要使用非正规方式引入 NFC 系统相关的 SDK。
确定没有继承任何 Application 相关的类,确定使用 ApplicationLike 代替。
热修复日志请使用 tag:DynamicRelease 过滤。
下载阶段:可以同时过滤 RPCException,如果有相关的异常,那么下载不会成功。
说明若出现 RPC 相关异常,可根据错误码进行排查,详细信息参考 RPC 调用。
合并补丁阶段:可以过滤 immediately=true,如果发现相关日志,则表示合并补丁成功。合并补丁成功之后,理论上只要重启 App,补丁就会生效。
- 本页导读 (0)