Flutter混合开发,热修复(Android端)

本人之后又基于 Flutter SDK 1.12.13+hotfix.8 版本,做过一次动态更新。
Flutter 动态下发更新(Android 端)

这里针对 Flutter SDK 1.2.0 版本做的修改;

热修复,目前只支持 Android 端的热修复。
纯Flutter代码,Google已经是支持热修复了,flutter.jar 里面也有相关的逻辑代码。利用的是微软的 CodePush。

Flutter初始化时序

Flutter 页面显示到 Android 端,实际就是用的 FlutterView 填充到 Activity或者 Fragment上的。

public static FlutterView createView(@NonNull final Activity activity, @NonNull final Lifecycle lifecycle, final String initialRoute) {
   
    FlutterMain.startInitialization(activity.getApplicationContext());
    FlutterMain.ensureInitializationComplete(activity.getApplicationContext(), null);
    final FlutterNativeView nativeView = new FlutterNativeView(activity);
    final FlutterView flutterView = new FlutterView(activity, null, nativeView);
    ......
    return flutterView;
  }

FlutterMain.startInitialization 主要做了初始化配置信息、初始化AOT编译和初始化资源,最后一部分则是加载Flutter的Native环境。跟热修复相关的主要是第三步,初始化资源 initResources()

public class FlutterMain {
   
   ......
   private static final String SHARED_ASSET_DIR = "flutter_shared";
   private static final String SHARED_ASSET_ICU_DATA = "icudtl.dat";
   private static String sAotVmSnapshotData = "vm_snapshot_data";
   private static String sAotVmSnapshotInstr = "vm_snapshot_instr";
   private static String sAotIsolateSnapshotData = "isolate_snapshot_data";
   private static String sAotIsolateSnapshotInstr = "isolate_snapshot_instr";
   private static String sFlutterAssetsDir = "flutter_assets";
   public static void startInitialization(Context applicationContext, FlutterMain.Settings settings) {
   
       ......
       // 初始化配置信息
       initConfig(applicationContext);
       // 初始化AOT编译
       initAot(applicationContext);
       // 初始化资源
       initResources(applicationContext);
       // 加载Flutter的Native环境
       System.loadLibrary("flutter");
       ......
   }
   private static void initResources(Context applicationContext) {
   
       ......
       sResourceExtractor = new ResourceExtractor(applicationContext);
       String icuAssetPath = "flutter_shared" + File.separator + "icudtl.dat"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值