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里面支持调试和热重载等功能。
方法很简单,以安卓为例子。
- 打debug的flutter aar,引用到安卓项目中,你可以用maven本地引用,也可以上传到自己的maven库中远程引用。
- debug运行安卓项目
- 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移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。
最后
想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。