Flutter v1,2024最新Android开发面试大全

cannot load assets file starting with “#” from the rootBundle after install

  • #开头 #xxxx.png
  • 带空格 xxx xxx.png
  • 中文字符 4401-校历.svg
  • 特殊字符非拉丁

解决

  • 修改命名方式
  • 执行git revert 383e90eb13bdc50ca0cce9f2575329ba8593506e,回滚Flutter版本
  • 坐等官方发hotfix

命名不规范,alex两行泪

ios bitcode

因为某些问题,现存的ios 项目无法开启 bitcode,但是v1.12.13中Flutter默认开启了这个,并且引擎也是enable bitcode了的。这个会导致整个项目无法编译成功。网上到处搜索了下,也问了一些ios大佬,最终Flutter Team大佬告诉了使用命令来抽离出bitcode的办法。

  • 执行命令flutter build ios-framework --no-debug --no-profile,生成App.framework(20.2MB)和Flutter.framework(369.8MB)

➜ flutter_module flutter build ios-framework --no-debug --no-profile
Building framework for com.example.flutterModule.cc in release mode…
├─Populating Flutter.framework… 1,486ms
├─Building Dart AOT for App.framework…
121.1s (!)
├─Assembling Flutter resources for App.framework… 0.2s
└─Moving to build/ios/framework/Release 0.0s

  • cd 到framework,使用xcrun bitcode_strip -r app -o app抽离bitcode

app 为App.framework 里面的那个可执行文件 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同理也给Flutter.framework做相同操作xcrun bitcode_strip -r Flutter -o Flutter

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

抽离之后App.framework(10.6MB)和Flutter.framework(39.2MB)

安卓混合开发代码迁移

add-to-app官方文档 喵在Flutter 升级 1.12 适配教程中提到了关于插件注册的变化,这部分我就不再提了。

  • FlutterActivity 设置透明 官方api有问题,BackgroundMode枚举并没有暴露出来

FlutterActivity
.withNewEngine()
.backgroundMode(FlutterActivity.BackgroundMode.transparent)
.build(context)

暂时可以通过下面代码来设置

Intent intent = FlutterActivity.withNewEngine().initialRoute(‘route’).build(activity);
intent.putExtra(“background_mode”,“transparent”);
activity.startActivity(intent);

  • 官方支持缓存引擎

但是我没有发现初始化route的方法,如果从原生进一个flutter页面就要new一个引擎,那么这个 FlutterEngineCache的作用是?希望有知道的小伙伴能答疑一下。

更新

你可以通过 flutterEngine.getNavigationChannel().setInitialRoute('my/route');

但是页面堆载管理就比较复杂了,这也是咸鱼flutter_boost为我们做的事情了。

创建

// Instantiate a FlutterEngine.
flutterEngine = new FlutterEngine(this);

// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartEntrypoint.createDefault()
);

// Cache the FlutterEngine to be used by FlutterActivity.
FlutterEngineCache
.getInstance()
.put(“my_engine_id”, flutterEngine);

使用

startActivity(
FlutterActivity
.withCachedEngine(“my_engine_id”)
.build(currentActivity)
);

混合开发调试热重载

混合开发一般都是安卓aar,ios framework这种方式,v1.12.13里面支持调试和热重载等功能。

方法很简单,以安卓为例子。

  1. 打debug的flutter aar,引用到安卓项目中,你可以用maven本地引用,也可以上传到自己的maven库中远程引用。
  2. debug运行安卓项目
  3. vscode中打开你的flutter module项目,vscode的command palette中找到

debug:flutter attach to process(devices) 4. 进去你安卓项目中的flutter模块,这个时候vscode会同步文件到设备中。

我试了下可以debug,可以热重载,但是感觉有bug,第一次进去不会进断点,必须热重载一下。

ios的话,有bug,热重载报错

对于之前苦逼进行混合调试的我来说,已经很不错了,将就用了,希望官方继续完善。

安卓华为设备闪退

华为设备闪退

  • Huawei DUB AL00A
  • Huawei DUB AL00
  • Honor BKK AL10
  • Huawei ARS AL00

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

最后

想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android学习PDF+架构视频+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

最后

想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android学习PDF+架构视频+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值