2020 年需要关注的 5 大 Android 开发技术

虽然编程环境每天都有新变化,但 Android 无疑是其中更新迭代最频繁的,每年甚至每个月都有新东西。本文介绍了 2020 年开发者最需要关注的 5 大 Android 开发技术。

在众多 Android 开发团队参加的 Droidcon London 2019 大会上,一系列新技术令人眼花缭乱。从 Joe Birch 介绍的无障碍智能吉他到即将到来的 Jetpack Compose 库,创新内容实在太多了,主流社区需要找到几项核心技术才不至于迷失方向。

这篇文章就带着大家一起看看需要重点关注的一些核心技术,同时本文会解释为什么应该优先实现这些技术,以及实现的一些初始途径。需要特别强调一下,实现这些技术虽然不会让你的终端用户发出惊叹,但它们能帮助开发者打造震撼人心的特性,并为开发人员带来更赏心悦目的代码库!

Kotlin 通常被视为下一个 Java,它是由谷歌和 JetBrains(Android Studio 开发者)赞助的。Java 从一开始就一直是 Android 应用的首选开发语言,但近年来 Kotlin 迅速普及,如今在 10,000 种 Google Play 应用中有近 60%使用了 Kotlin 。虽说在少数需要访问底层原生代码的情况下,仍会继续使用 C++;但在其他情况下,Kotlin 都可以代替 Java。

Kotlin 的主要优势是与 Java 的完全互操作性,这意味着开发人员可以尽可能迁移旧代码,而不用完全重写整个应用程序。这两种语言兼容得很好,Android Studio 甚至可以自动从 Java 转换为 Kotlin。

这种兼容性,加上更简洁的语法和数百项细小改进,使 Kotlin 在 StackOverflow 的 2019 年开发人员调查中成为第四大“最受欢迎”和第五大“想要”的编程语言,在所有移动编程语言中排名最高。

迁移现有应用有一个好方法,就是在修改现有 Java 文件时将其转换为 Kotlin。虽然这意味着你要把经常编辑的文件转换过去,会增加代码审查的复杂度(比如会面临潜在的冲突),但由于转换后的区域能得到审查,因此可以确保任何问题都能被发现。

目前 Candyspace 中使用的 Kotlin 代码占 86%(并且一直在增长),其余的 14%是实用工具 / 转换代码,这些代码已经有些年头没改动过了。

谷歌的 AndroidX/Jetpack 库是一组实用工具,旨在简化常见的应用需求。例如用于设备上数据库的 Room ,或用来在底层数据更改时更新显示内容的 LiveData 。

有了 Jetpack 库,新项目就省掉了重新发明轮子的麻烦,也不必等待其他开发人员来开源他们的实现方式,现在每位开发者都能获取到那些基础要素了。这些库更新非常频繁,新功能不断推出,错误修复也会及时发布。由于这些库是为了协同工作而构建的,因此多使用 AndroidX 库有助于最大程度地减少应用中出现意外。

从开发工作起步开始就使用 Jetpack 库可以节省数百小时的时间,但我们也可以将已有的应用迁移到 Jetpack 库上面。虽然看起来很麻烦,但由于这些库非常流行,针对迁移工作的指南也很容易找到。至少,底层 Android 元素(视图、片段等)可以自动转换。

在 Candyspace,我们使用了 Data Binding 和 ViewModel,并可能很快加入 Room 和 Navigation。

一直以来,应用都被构建为一个巨大的“应用”模块,其中包含整个应用所需的一切。尽管这样做确实能让资源共享起来更容易,但也意味着这个应用的某些部分无法为其他应用 / 开源项目所重用;更重要的是,对应用做出更改时必须重新编译整个代码库。

相反,如果应用由许多较小的模块组成,则只需重新编译做出更改的代码即可,从而大大缩短了构建时间。此外,模块化设计还为高级 Android 特性(例如即时应用——用户无需安装任何内容即可使用你的应用的部分功能,和动态特性——按需安装应用的各个部分)的应用打开了大门。

将一款现有应用拆分为多个模块可能会是一个很复杂的工作,因为会因此而发现之前隐藏的问题(“DateUtility 是什么东西?为什么每个类都需要它!?”);但是一旦改造完成,代码库就会进入一种更加健康的状态。另外,如果一款新的应用需要类似的功能,则可以快速重用已有模块,从而大大节省时间!

模块化应用架构的一个示例(来源:本文作者创建!)

虽然设计一个模块化架构可能是很复杂的任务,但我之前已经写过一些指导性原则,这些原则受到了 Nikits Kozlov 关于模块化和构建时间的文章的启发。Plaid 也写了一篇介绍他们向模块化设计迁移经验的文章。

在 Candyspace,我们的应用设计都是完全模块化的,以尽量减少构建时间对开发工作的中断影响。

使用传统的 APK 将应用分发到用户的设备时,必须安装针对所有设备准备的所有资源。这意味着每张位图图像可能会有 5 个副本(用于不同的屏幕精度),还要安装针对不同设备架构的多个库版本,甚至还得安装多组边距和填充值。

使用 App Bundle 分发一款应用时,用户下载的 APK 只包含他们实际所需要的资源。这样一来,平均的应用大小就会减少 20%,而未经优化的应用改换格式后应用大小将会得到更显著的缩减。

缩减应用大小的示例(资料来源: https://events.google.com/io2018/)

App Bundles 是 18 个月前刚刚诞生的,但已经有超过 25%的应用安装时使用了这种格式!这是谷歌推荐使用的格式,并且大多数应用几乎无需改动就能使用这种格式,只需在 Play 商店上处理一下 App Bundle 的签名即可。

在 Candyspace,我们正在迁移到 App Bundles 上,同时尽量避免破坏我们现有的工作流程(Slack、QAing 构建、非 Google Play 安装)。Alistair Sykes 的文章是一份很棒的迁移参考资料,文章考虑到了 CI 服务器、Slack 和 Google Play 内部应用共享等事项。

是的,测试。当然,测试并不是什么闪亮的新特性,也不是用户能看到的内容,但想要确保一款已有一定用户基础的应用的可靠性,就必须要彻底测试你的应用程序才行。由于崩溃率会直接影响你的 Play 商店评分(并且肯定会拖累评分!),因此应该设法将其保持在较低水平上。

测试金字塔(来源:developer.android.com)

Android 的三种最常见的测试类型分别是(降序排列):

  • 单元测试,例如:我的平方根函数会返回平方根吗?

这些测试将构成你测试流程的大部分内容,它们用来确保特定的代码段(例如一个函数)能按预期正常运行。当你对一个部件建立起信心后,就可以将其用于…

  • 集成测试。例如:我的数学模块可以与位置模块协同工作吗?

这些测试可确保你的各个代码区域(模块或层)可以正常协同工作。知道应用的组件可以正确相互通信后,你就可以添加…

  • 自动化的 UI 测试,例如:用户可以在应用上标记一个位置吗?

在设备或仿真器上只会运行这些测试,它们能确保应用按预期提供完整的用户体验。这些测试通常比其他类型的测试要慢得多(并且运行起来更加不便)。

谷歌建议将测试的分布定为 70%的单元测试、20%的集成测试和 10%的大型测试,占比较小的部分需要更长的执行时间、维护时间和实施时间。

最好的测试资源是官方文档,因为它提供了所有测试类型的介绍,以及如何将其实现到项目中的教程。

在 Candyspace,我们将重点放在单元测试上,其占比要比谷歌建议的比例更大,以确保所有新类的行为都是可预测的。我们目前还在改进自动 UI 测试,以减少对手动测试的依赖。

在编程的任何领域,关于解决问题的最佳方法都会有一百种不同的意见;但 Android 有绝对优势:Android 拥有一个庞大的开发者社区,这意味着一个十分优秀的新技术会迅速在开发者中普及。当你在互联网上向陌生人寻求帮助时,如果你找的是“Jetpack LiveData”而不是“之前的开发人员从 Web 开发者朋友那里复制并转换的库”,成功获得答案的可能性就会大得多!

维持一个健康的代码库的关键,就是能够适应这些不断变化的标准并重构现有项目。为了了解最新的 Android 开发实践和最佳做法,我推荐大家关注 Android 开发者博客、 /r/AndroidDev subreddit 和 Fragmented 播客。

零基础学习App开发第一天——创建与发布App

移动web时代,手机的兴起使得大部分在手机上的应用开发变得如火如荼,然而传统的app开发需要掌握的知识点繁多,开发周期特别漫长,为了解决这个问题,webapp应运而生,它使得app开发的难度大幅度降低,只要你懂前端就可以开发app;然而由于技术的更迭,不光出现了app,还有小程序以及一些网站,于是,很多人瞄准了多端应用市场,所谓多端指的是一套代码多个平台运行,比如我在DCloud上写了一个应用,我可以把它打包为小程序、网站和App,这样就减少了我们开发的难度和时间,目前最火的要属DCloud和APICloud了,由于uniapp是基于DCloud,所以咱们今天所讲的内容全部基于DCloud平台,好了,下面让我们一起进入到今天的课题中吧。

这个就是我们今天的主人翁,往后我们会一直用这个工具开发app甚至小程序和网站,下载地址:https://www.dcloud.io/hbuilderx.html,下载好后直接安装即可,安装好后界面是这样的,如图:

安装完毕之后需要我们再去申请注册一个DCloud的账号用于登录,这个很简单,就不说了。

首先我们新建一个目录,如图:

然后选择uniapp,如图:

此时我们先填写项目名称,然后选择项目的目录,最后我们可以选择一个合适的模板,或者是空模板,这里我们我们为了上手方便选择hello uni-app这个模板,选择的这个模板里面的内容是uni-app中的所有组件的使用方法,如图:

当我们点击创建后就会自动生成一个目录了,如图:

通过目录里面的文件夹名我们可以了解到,应用的界面其实是放在pages文件夹里的,所以我们随便点击一个pages里的文件,然后将其运行在内置浏览器中,如图:

当我们做完这一切之后就可以发布这个app,在发布之前我们还可以对这个App的其它设置进行一些调整,如图:

调整好之后,我们就可以来打包了,如图:

这里有三个选项,云打包、本地打包和制作应用wgt包,这三个选项是什么意思了,首先,云打包可以不用在电脑上安装任何sdk就能制作一个app,而本地打包就麻烦点,需要我们下载Android studio然后还有一些sdk才能打包好,过程比较繁琐;至于wgt包,制作好了之后可以进行同步更新并且不用用户再度下载,非常的方便。因此这里我们选择云打包,如图:

可以看到有些平台的apk打包成功了,不过有些失败的,不去纠结那么多,我们直接把这些apk安装到手机上即可使用。

本文主要和大家讲的就是关于uniapp的制作和打包,可以看到,uniapp让我们轻松做到了从零基础到开发app。更多精彩好文敬请关注公众号简易编程网。

小编妹子手把手带您开发第一个android应用

我认为现代世界里最重要的不是我们所处的位置,而是我们前进的方向。  (老奥利费·温德尔·霍姆斯​)

大家好,我是今天的值班小编,业余android开发工程师,来这个平台凑个数。

今天是鼠年的第四天了,不知道朋友们在家里宅的可开心。 其实不能出门也不算是坏事,网上不是流传一个关于牛顿大佬的说法么:

1665 年,英国伦敦大瘟疫,当时牛顿被迫回家进行隔离,他亲戚不走,聚会也不参加,但就是通过这段时间的学习和思考,他终于创立了万有引力定律。

建议大家也趁着这段特殊的时期,多休息,多学习,比如跟着小编学一下android开发?

可能您是iphone党,但是考虑到android 85%以上的市场份额,还是值得阅读一下本文的。

win10

IDE就用android studio。小编这里就不贴下载地址了,百度搜索一下第二条结果就是官方网站(英文,google公司出的)。 什么?你说第一条搜索结果?那是国内的山寨官方网站。为什么说它是山寨网站呢,因为它的下载速度还不如英文的官网速度快。

下载一个700多M的安装文件,一路Next安装成功;打开android studio之后,又开始下载几百M的SDK,这里小编就不截图了。

下面就可以正常运行android studio了。如下图所示,创建一个新的项目:

然后进入下面的界面,可以看到,android设备有很多,比如手机、pad、可穿戴设备(手环之类的)、电视、汽车、其它,咱们选择手机就行了,然后选择一个”Add No Activity“的空白项目:

然后就是最后一步了,填写项目信息:

第一行是项目名称,要用英文名称哈,而且第一个字母通常都要大写。

第二行是package name,理论上可以随便写;第三行是这个项目在硬盘上的位置,随便选一个;第四行是开发语言,支持java或者Kotlin,小编只会java,就选java吧。

第五行很重要很重要,它设置的是咱们的android app可以在哪些版本的 android手机上运行。

从图上可以看到,小编选择的是大于等于android 6.0,然后下方还有一个提示,说是选择android6.0之后,可以在大约62.6%的手机上运行。 也就是说世界上有37.4%的手机,运行的android系统版本低于6.0,不能运行咱们这个app。

看到这里,可能有的朋友就要说了,那我选最低的android 1.0, 岂不是可以兼容全部的android手机了,话虽没错,但是老版本的android里面很多的功能都缺失,有可能会给开发过程带来困难,甚至某些功能根本就开发不出来了。

这里小编有个建议,看一下您老板的手机运行的是android哪个版本的系统,提前做好准备~

点击\”finish\”之后,就进入了android studio的开发界面。

然后先别动,它会执行一个sync操作,说白了就是下载项目依赖的包,又是几百M啊。

直到出现成功为止:

在左上角的app上面点击右键,new一个empty activity:

如果您右键之后,发现没有这么多的菜单项,一般都是上一步的sync操作还没做完,或者没成功。

Activity就可以认为是一个页面了, 记得勾选上”Launcher Activity“,表示app启动的时候就首先打开这个页面:

android的界面设计可以说是非常的简单了,可以像vs或者网页开发一样,直接拖控件:

记得先切换到activity_main.xml文件,然后才会出现上图中的界面设计器;红框里面就是各种控件了,非常的丰富。

为了演示,咱们就添加一个数字输入框,一个按钮、以及一个TextView:

实现的功能就是用户输入数字并点击按钮之后,在TextView里面显示这个数字。虽然是很无聊且无意义的功能,但是做为一个演示功能,也足够了。

虽然从预览界面上看起来,这三个控件排列的很好,但是如果此时在手机上运行一下这个app的话,会发现这三个控件重叠到了一起。

需要给每一个控件设置一下Layout,也就是它在屏幕中的位置:

在界面上切换到MainActivity.java,开始准备写代码了,直接写到onCreate()方法里面就可以。

代码逻辑比较简单,就是给button添加了一个事件,然后getText和setText就可以了,注释也写得比较清楚,小编就不再一句一句地解释代码了。

值得一提的是R.id.xxxx 是在上一步界面设计的时候给每个控件生成的默认id,是可以修改的。

ctrl+F9就可以编译了。

或者是通过菜单里面的build -> Make Project来进行编译。

话说要做正式的android开发,一定要准备个配置高一点的电脑。小编这个几年前狗东买的双核4G联想笔记本,编译这么一个简单的项目就要好几分钟。

项目编译通过之后,就可以考虑运行的事情了。有两种方式,第一种是通过android studio可以安装任意版本的android模拟器,然后在模拟器里面运行。 小编试了一下,果断放弃了。实在是电脑的配置太低了,模拟器根本跑不起来。

第二种方式是真机运行。找一个android手机,在设置里面打开\”开发人员选项–USB调试\”, 然后通过usb数据线连接到电脑。

shift+F10就可以运行了,也可以通过菜单上面的Run->Run app来运行。

android studio里面有一个专门用来做UI自动化测试的包,叫做androidx.test.espresso。

由于篇幅有限,小编就不具体展开了,有兴趣的朋友可以网上找找教程。

在这个举国欢庆又举国谨慎的日子里面,朋友们千万要沉住气,还是那句话,多休息,多学习,希望就在明天。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。