android混合开发一简书,Flutter Android 混合开发的依赖关系。

4747f77ce889

FlutterApplication

进入 FlutterMain.startInitialization(this);

4747f77ce889

FlutterMain片段

进入initConfig(applicationContext);

4747f77ce889

FlutterMain片段

4747f77ce889

FlutterMain片段

4747f77ce889

flutter编译产物

app怎么依赖assets目录下的这些东西呢?

进入initAot(applicationContext);

读取assets文件

4747f77ce889

FlutterMain片段

存放的位置

进入initResources(applicationContext);

private static void initResources(Context applicationContext) {

Context context = applicationContext;

(new ResourceCleaner(applicationContext)).start();

Bundle metaData = null;

try {

metaData = context.getPackageManager().getApplicationInfo(context.getPackageName(), 128).metaData;

} catch (NameNotFoundException var4) {

Log.e("FlutterMain", "Unable to read application info", var4);

}

if (metaData != null && metaData.getBoolean("DynamicPatching")) {

sResourceUpdater = new ResourceUpdater(applicationContext);

if (sResourceUpdater.getDownloadMode() == DownloadMode.ON_RESTART || sResourceUpdater.getDownloadMode() == DownloadMode.ON_RESUME) {

sResourceUpdater.startUpdateDownloadOnce();

if (sResourceUpdater.getInstallMode() == InstallMode.IMMEDIATE) {

sResourceUpdater.waitForDownloadCompletion();

}

}

}

sResourceExtractor = new ResourceExtractor(applicationContext);

sResourceExtractor.addResource(fromFlutterAssets(sFlx)).addResource(fromFlutterAssets(sAotVmSnapshotData)).addResource(fromFlutterAssets(sAotVmSnapshotInstr)).addResource(fromFlutterAssets(sAotIsolateSnapshotData)).addResource(fromFlutterAssets(sAotIsolateSnapshotInstr)).addResource(fromFlutterAssets("kernel_blob.bin"));

if (sIsPrecompiledAsSharedLibrary) {

sResourceExtractor.addResource(sAotSharedLibraryPath);

} else {

sResourceExtractor.addResource(sAotVmSnapshotData).addResource(sAotVmSnapshotInstr).addResource(sAotIsolateSnapshotData).addResource(sAotIsolateSnapshotInstr);

}

sResourceExtractor.start();

}

FlutterActivity与FlutterActivityDelegate

4747f77ce889

FlutterActivity片段

4747f77ce889

FlutterActivity片段

4747f77ce889

FlutterActivityDelegate的onCreate()

ensureInitializationComplete是把flutter相关的初始化进来然后使用FlutterView进行行加载显示

4747f77ce889

找到flutter_assets下的flutter产物

每一个FlutterView中包了一个FlutterNativeView然后最终就是FlutterView->runFromBundle调用FlutterNativeView->runFromBundle最后渲染到界面上

4747f77ce889

来自闲鱼

app module

4747f77ce889

这三个不用copy,app依赖my_flutter module就可以

4747f77ce889

复制这个到app module 对应目录实现手动热更新

依赖完成就可以通过startActivity成功的进入到FlutterActivity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值