2024年Android最新10天学会flutter DAY9 flutter自定义组件Plugin,机器学习实战pdf

本文提供了整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,以及Android开发的系统化学习资料,强调了知识体系的重要性,鼓励深入研究。同时,作者还邀请读者加入技术交流社区,共同学习成长。
摘要由CSDN通过智能技术生成

总结

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

开发步骤


开发 Dart packages

要创建Dart包,请使用–template=package 来执行 flutter create

flutter create --template=package hello

这将在hello/文件夹下创建一个具有以下专用内容的package工程:

  • lib/hello.dart:

  • Package的Dart代码

  • test/hello_test.dart:

  • Package的单元测试代码.

  • 实现package

  • 对于纯Dart包,只需在主lib/.dart文件内或lib目录中的文件中添加功能 。

  • 要测试软件包,请在test目录中添加unit tests。

开发 plugin packages

Step 1: 创建 package
  • 要创建插件包,请使用--template=plugin参数执行flutter create

  • 使用–org选项指定您的组织,并使用反向域名表示法。该值用于生成的Android和iOS代码中的各种包和包标识符。

flutter create --org com.example --template=plugin hello

  • 这将在hello/文件夹下创建一个具有以下专用内容的插件工程:

  • lib/hello.dart:

  • 插件包的Dart API.

  • android/src/main/java/com/yourcompany/​hello/HelloPlugin.java:

  • 插件包API的Android实现.

  • ios/Classes/HelloPlugin.m:

  • 插件包API的ios实现.

  • example/:

  • 一个依赖于该插件的Flutter应用程序,来说明如何使用它

默认情况下,插件项目针对iOS代码使用Objective-C,Android代码使用Java。如果您更喜欢Swift或Kotlin,则可以使用-i 或 -a 为iOS或Android指定语言。例如:

flutter create --template=plugin -i swift -a kotlin hello

Step 2: 实现包 package
  • 由于插件包中包含用多种编程语言编写的多个平台的代码,因此需要一些特定的步骤来确保顺畅的体验。

  • Step 2a: 定义包API(.dart)

插件包的API在Dart代码中定义。打开主文件夹hello/ 。找到lib/hello.dart

  • Step 2b: 添加Android平台代码(.java / .kt)

我们建议您使用Android Studio编辑Android代码。

在Android Studio中编辑Android平台代码之前,首先确保代码至少已经构建过一次(例如,从IntelliJ运行示例应用程序或在终端执行cd hello/example; flutter build apk)

  1. 启动Android Studio

  2. 在’Welcome to Android Studio’对话框选择 ‘Import project’, 或者在菜单栏 ‘File > New > Import Project…‘,然后选择hello/example/android/build.gradle文件.

  3. 在’Gradle Sync’ 对话框, 选择 ‘OK’.

  4. 在’Android Gradle Plugin Update’ 对话框, 选择 ‘Don’t remind me again for this project’.

您插件的Android平台代码位于 hello/java/com.yourcompany.hello/​HelloPlugin.

您可以通过按下 ▶ 按钮从Android Studio运行示例应用程序.

  • Step 2d: 连接API和平台代码

最后,您需要将用Dart代码编写的API与平台特定的实现连接起来。这是通过platform channels完成的。

添加文档

建议将以下文档添加到所有软件包:

  1. README.md:介绍包的文件

  2. CHANGELOG.md 记录每个版本中的更改

  3. LICENSE 包含软件包许可条款的文件

发布 packages

一旦你实现了一个包,你可以在Pub上发布它 ,这样其他开发人员就可以轻松使用它

在发布之前,检查pubspec.yamlREADME.md以及CHANGELOG.md文件,以确保其内容的完整性和正确性。

然后, 运行 dry-run 命令以查看是否都准备OK了:

flutter packages pub publish --dry-run

最后, 运行发布命令:

flutter packages pub publish

Plugin 通信原理


  • 在介绍Plugin前,我们先简单了解一下Flutter:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9gm91FJq-1652166967069)(./img/flutter.png)]

  • Flutter框架包括:Framework和Engine,他们运行在各自的Platform上。

  • Framework是Dart语言开发的,包括Material Design风格的Widgets和Cupertino(iOS-style)风格的Widgets,以及文本、图片、按钮等基础Widgets;还包括渲染、动画、绘制、手势等基础能力。

  • Engine是C++实现的,包括Skia(二维图形库);Dart VM(Dart Runtime);Text(文本渲染)等。

实际上,Flutter的上层能力都是Engine提供的。Flutter正是通过Engine将各个Platform的差异化抹平。而我们今天要讲的Plugin,正是通过Engine提供的Platform Channel实现的通信。

  • Plugin其实就是一个特殊的Package。Flutter Plugin提供Android或者iOS的底层封装,在Flutter层提供组件功能,使Flutter可以较

方便的调取Native的模块。很多平台相关性或者对于Flutter实现起来比较复杂的部分,都可以封装成Plugin。其原理如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGdENMPl-1652166967071)(./img/flutter_channel.png)]

通过上图,我们看到Flutter App是通过Plugin创建的Platform Channel调用的Native APIs。

Platform Channel:
  1. Flutter App (Client),通过MethodChannel类向Platform发送调用消息;

  2. Android Platform (Host),通过MethodChannel类接收调用消息;

  3. iOS Platform (Host),通过FlutterMethodChannel类接收调用消息。

PS:消息编解码器,是JSON格式的二进制序列化,所以调用方法的参数类型必须是可JSON序列化的。

PS:方法调用,也可以反向发送调用消息。

  • Android Platform

FlutterActivity,是Android的Plugin管理器,它记录了所有的Plugin,并将Plugin绑定到FlutterView。

  1. 理解Platform Channel工作原理
  • Flutter定义了三种不同类型的Channel,它们分别是

最后:学习总结——Android框架体系架构知识脑图(纯手绘xmind文档)

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。

下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)

除此之外,前文所提及的Alibaba珍藏版 Android框架体系架构 手写文档以及一本 《大话数据结构》 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,请注意:点赞+点赞+点赞!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

数据结构》** 书籍等等相关的学习笔记文档,也皆可分享给认可的朋友!

——感谢大家伙的认可支持,请注意:点赞+点赞+点赞!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值