Android开发新技术

最新改变

每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分享 Android 的最新技术动向及开发心得。
今年 Summit 的 Slogan 是 “Excellent apps,across devices” , 即使用 Jetpack 等 MAD Skill (Moden Android Development) 开发出更优秀的应用,并通过 Android 系统落地到更多种类的智能设备。本次活动围绕这一主旨做了 30 多场技术分享(视频),涉及多个方向:

Android 12

12L

Building across screens

Kotlin

Jetpack

Jetpack Compose

Android Studio

AGP

在这里,我将重点介绍Jetpack组件库,除此之外,还会再讲讲Flutter技术。

Jetpack

Jetpack作为2021年Android 界最火的组件库,使用更方便、向后兼容、支持RxJava、减少代码量、无需捆绑等优点,也是谷歌想拓展和维护的方向。由于长期苦恼于第三方库选择的广大Android开发者而言,这也是谷歌为我们提供的一盏明灯。

Jetpack 可帮助开发人员遵循最佳实践,减少样板代码并编写可在 Android 版本和设备上一致工作的代码,以便开发人员可以专注于他们关心的代码。

组件库(共85个)

第一个是核心类(8个),你也可以把它理解为基础类,也就是说我们一个最基本的 Android 工程都会默认依赖这些组件库。

第二个是架构组件(10个),Jetpack 推出之后很令人兴奋的一点,就是 Google 引入了现代 Android 应用开发的架构指南,结合 MVVM 的架构设计,帮助我们轻松的处理 UI 与业务逻辑之间的关系。

第三个是 UI 组件(22个),这里需要说明一点,大多数的 UI 组件其实都包含着核心组件中的 appcompat * 中了,这里列出的是 Jetpack 中以独立组件库存在的 UI 组件。

第四个是特殊业务组件(16个),根据不同的业务场景,选择性使用。

第五个是用不着的组件(15个),这个完全是处于我个人出发,目前我从事的是 Android 互联网项目的开发,所以涉及游戏、车载、TV 等或平时极少使用的组件,我都规整到这一类中了。

第六个是弃用的组件(11个),有一些是因为官方不再更新维护了,有一些是在 Jetpack 中有更好的替代解决方案,如果我们的项目中还在使用这些组件库的话,建议尽快替换到最新的替代组件上。

第七个是用于测试的组件(2个)。

Flutter技术

Flutter是谷歌的推出的跨平台UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。这是谷歌的原话。就在近期 Flutter 2.5发布了,可以看官方对出Flutter 输出一直很稳定,社区也非常活跃。不过 Flutter 的相关的争议一直没有停止过,有人觉得 Flutter 可以算是当今跨平台的最佳方案,也有人觉得 Flutter 的实际表现低于预期,甚至流传出有大厂正在放弃 Flutter 这样的话。不过Flutter作为 Google 的亲儿子,其官方的扶持力度大家都有目共睹。

示例代码

Hello World!

import ‘package:flutter/material.dart’;

void main() {
runApp(new Center(
child: new Text(‘Hello World!’)
));
}

在Dart2.0版本之后,可以省略new。

import ‘package:flutter/material.dart’;

void main() {
runApp(Center(
child: Text(‘Hello World!’)
));
}

一些优势:

------比 Android 原生上更高效地构建漂亮的自定义 UI

------跨平台能力,一套代码可以在多端运行,例如:Android、iOS、Web等

------Flutter 的高性能和UI 上表现的一致性

------开发效率高

------提供了许多开箱即用的强大功能

一些弊端:

------虽说跨平台,但部分能力依然依赖原生代码

------混合开发模式的效率问题,始终是个痛点

------Dart 带来的学习成本较高

------三方库不健全

------一切皆 Widget 带来的混乱

框架特性

快速开发

Flutter的热重载帮助你快捷方便的试验、重构UI、添加特性和修复bug。在仿真器、模拟器和ios、android硬件上体验亚秒级的重载,而不会丢失状态。

绚丽UI

通过Flutter内建的漂亮的质感设计和Cupertino(ios-flavor)小工具、丰富的动画API,平滑的自然滚动和平台感知,让用户感到满意。

响应式

通过Flutter的现代响应式(Reactive)框架和丰富的平台布局和基础组件轻松构建您的用户界面。用强大而灵活的API解决2D、动画、手势、效果等难题。

class CounterState extends State {
int counter = 0;
void increment() {
// 通知Flutter框架状态已改变
// 因此框架可以运行build()并更新显示
setState(() {
counter++;
});
}
Widget build(BuildContext context) {
// 这个方法会在每次setState调用时运行
// Flutter框架已经对重复快速运行build方法进行优化
// 因此你可以仅更新你想要更新的任何东西,而不必
// 更新整个组件实例。
return Row(
children: [
RaisedButton( o
nPressed: increment,
child: Text(‘Increment’),
),
Text(‘Count: $counter’),
],
);
}
}

访问原生功能

通过平台api、第三方sdk和原生代码使您的应用变得生动起来。Flutter让您可以重用您现有的java、swift和Objc代码,并在iOS和Android上访问原生特性和SDK。
访问平台功能非常简单。这是互操作示例的片段:

Future getBatteryLevel()

async {

var batteryLevel = ‘unknown’;

try {
int result = await methodChannel.invokeMethod(‘getBatteryLevel’);
batteryLevel = ‘Battery level: $result%’;
}
on PlatformException {
batteryLevel = ‘Failed to get battery level.’;
}

setState(() {
_batteryLevel = batteryLevel;
});

}

作者:王健业

原文链接

Android开发新技术相关推荐

  1. Android 开发新技术:Jetpack Compose当仁不让

    前言 Jetpack Compose是用于构建原生Android 界面的新款工具包. 平时我们开发Android界面都是靠XML画出来,但是Compose 则是用代码来写界面,和Flutter写法有点 ...

  2. android开发案例

    20 多个可以提高你安卓开发技能的开源 app 学习的最佳方式就是阅读,对程序员来说也是如此.如果你想成为一个更优秀的程序员,你必须的代码,就是这么简单.书籍,博客,论坛在某种程度上都是有益的,但是没 ...

  3. 在移动互联时代下,介绍几个Android 开发的新技术

    Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发 ...

  4. 折叠屏就要来了,适配逼死 Android 开发?

    1. 异型屏还没适配好,折叠屏就要来了,Android 的碎片化,让开发者又多掉了不少头发. 北京时间 11 月 8 日,三星在旧金山向开发者发布了一款可折叠屏幕手机.并表示,新技术需要开发者调整其 ...

  5. [Android实例] 最全的Android开发资源整理--进阶必备

    本帖最后由 一切随枫 于 2014-6-9 12:08 编辑 原文链接: http://stormzhang.github.io/android/2014/06/05/android-awesome- ...

  6. Android开发举步维艰,上弘法寺七七四十九天取得“真经”!

    轶事 "老天爷保佑,在弘法寺烧的香还真显灵了!".在快要花光上一家公司的裁员赔偿款的4个月后,海投了200多家公司,面试了50多家,25岁在深圳的张鹏终于又"成功&quo ...

  7. 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试

    1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1 ...

  8. Android开发必用工具及其进阶途径

    三百六十行,行行出状元,怎么样才能在Android行业中当个状元了,开发过程中的高效.自我能力的提升显得至关重要,步入IT行业更是要时时刻刻学习,新技术更新快,今天将介绍一下Android开发中必用工 ...

  9. Android开发进阶1 思维改变 如何知道我需要学什么(上)

    最近在交流群里面收到很多粉丝的反馈说,"作为一个Android小白,应该如何去学好Android开发".对于这个问题,我也并不是说一两句话就能解决得了的.那既然不是说一两句话就能解 ...

最新文章

  1. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
  2. linux的QQ浏览器里微信,移动端微信内置浏览器(或QQ浏览器)无法识别onclick事件的问题解决...
  3. POJ-3268-最短路(dijkstra算法)
  4. FFT算法的完整DSP实现
  5. 为AI学术小白铺平道路,NeurIPS 2019推出New In ML2019特别会议
  6. 数据查找matlab,MATLAB:使用矢量化查找已排序数据的统计信息
  7. pdf怎么查看坐标 python_如何从PDF文件中提取文本和文本坐标?
  8. ubuntu 安装ssh服务
  9. 天线发射功率计算公式_增加发射功率,提高接收灵敏度就能提高通信距离吗?...
  10. sonar覆盖率怎么统计的_实战|Java 测试覆盖率 Jacoco插桩的不同形式总结和踩坑记录(上)...
  11. Python机器学习——概念及其物理解释
  12. docker 搭建nginx php mysql_docker搭建nginx+mysql+php
  13. GULP案例1:计算声子色散曲线和态密度
  14. web border属性
  15. 计算机防止检查清理软件吗,清除电脑垃圾用什么软件好 如何预防电脑卡顿
  16. Flink问题记录:A raw type backed by type information has no serializable string representation. It ....
  17. 奇谈 2020.11.24日记
  18. C# TreeView CheckBox 代码挑勾选中
  19. 编辑重命名文件夹下多个文件名,一键操作技巧
  20. 2022最新408考纲

热门文章

  1. java学习之网络编程
  2. 并查集训练题解(F-J)
  3. Altera PDN 设计和 FPGA 收发器性能
  4. 智邦国际ERP系统实现手机端扫码汇报生产工序
  5. 五大列级庄_详解五大名庄背后的1855分级
  6. 分辨率与屏幕尺寸之间的关系
  7. EPP协议(RFC5730翻译)
  8. 人工智能技术发展历史
  9. 麻省理工的服务器位置,麻省理工学院地理位置在哪里?学长告诉你
  10. LabVIEW编程基础:顺序结构编程