查看原文
其他

聚焦 Android 11: 开发语言

Android 谷歌开发者 2020-09-20

作者 / 产品经理 David Winer


在往期 #11WeeksOfAndroid 系列文章中我们介绍了联系人和身份隐私和安全Android 11 兼容性,本期将聚焦语言。我们将为大家陆续带来 #11WeeksOfAndroid 内容,深入探讨 Android 的各个关键技术点,您不会错过任何重要内容。


现代 Android 开发 (Modern Android Development) 始于出色的语言支持。Kotlin、Java 编程语言和 C++ 共同构成了 Android API 和日常应用开发工具的基础。本期我们将深入探讨 Android 三种核心语言的所有最新资讯: 从 Kotlin 协程到 Android 11 新的 Java API,再到更出色的本地开发工具,最新版本中包含了很多内容。



Kotlin 与协程


Kotlin 是现代 Android 开发与指导性开发库的核心。世界各地的 Android 开发者向我们反馈称,Kotlin 极具表现力,能帮助大家编写更高质量的应用,而且可以轻松在现有的 Java 代码库中使用,因此都对 Kotlin 赞赏有加。在 Play Store 上排名前 1,000 的应用中,有 70% 以上现在使用 Kotlin,而且 SlashData 在今年早些时候曾宣布,在过去两年中,Kotlin 一直是增长最快 (按百分比计算) 的语言社区。在 Android 11 测试版中,我们决定正式推荐使用协程 (coroutines) 在 Android 上执行异步操作,以此来进一步拥抱 Kotlin。


  • SlashData
    https://www.zdnet.com/article/programming-languages-javascript-now-used-by-12-million-developers-but-kotlin-rises-fastest/


借助协程,可以轻松编写、读取和理解异步代码。协程库具有稳定性,且已经与您可能正在使用的许多 Jetpack 库 (包括 Room、LiveData 和 WorkManager) 进行了深度集成。如果您不熟悉协程,请查看 Android ❤️ 协程: 如何使用 Kotlin 管理异步任务、最新的协程学习途径以及全新的协程开发者指南。我们之前也连载过一系列 Kotlin 与协程的相关内容,请移步 Kotlin 专辑深入了解。

  • Room
    https://developer.android.google.cn/training/data-storage/room/referencing-data
  • LiveData
    https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-i-reactive-uis-b20f676d25d7
  • WorkManager
    https://developer.android.google.cn/topic/libraries/architecture/workmanager
  • Android ❤️ 协程: 如何使用 Kotlin 管理异步任务
    https://www.youtube.com/watch?v=6manrgTPzyA
  • 协程学习途径
    https://developer.android.google.cn/courses/pathways/android-coroutines
  • 协程开发者指南
    https://developer.android.google.cn/kotlin/coroutines


Kotlin 入门指南


从 Android Jetpack 中的 Kotlin-first 到与 Android Studio 工具的深度集成,Android 与 Kotlin 已经形成紧密的联系,现在无疑是开始使用 Kotlin 的最佳时机。然而,我们也听到很多反馈,表示说服团队采用 Kotlin 并不那么容易。即使 Kotlin 可与 Java 编程语言实现 100% 的互操作性,但是团队成员可能会有顾虑。花时间学习一种新语言是否值得?相对于我们的其他产品和技术优先事项,应如何确定 Kotlin 的优先级?

近期,我们发布了 Google Home 团队的一项新案例研究,以帮助解答其中的一些问题。在过去一年中,Google Home 团队将所有新功能开发移至 Kotlin,发现其空指针异常在同一时期内下降了 33%。这与世界各地的 Android 团队 (从 Duolingo 到 Zomato 再到 Cash App) 的反馈一致,Kotlin 不仅能确保生产力,还能提升应用质量,为大大小小的团队创造了巨大的价值。有关 Kotlin 的最新案例分享和数据,请查看全新 Kotlin 案例研究页面。

  • 一项新案例研究

    https://developer.android.google.cn/stories/apps/google-home

  • Duolingo

    https://developer.android.google.cn/stories/apps/duolingo-kotlin

  • Zomato

    https://www.youtube.com/watch?v=ao9QvtpszOU&vl=en

  • Cash App

    https://www.youtube.com/watch?v=roSp-SsBPp4

  • Kotlin 案例研究页面

    http://developer.android.google.cn/kotlin/stories


对于初学者,我们已宣布推出新的 Android Basics in Kotlin 课程。如果您刚刚开始学习编程,那么 Android Basics 会教授一些基本的编程概念,例如函数和变量,并将带您进入编程世界,从入门级的 "Hello World" 一直到使用 Kotlin 构建完整的 Android 应用。

  • Android Basics in Kotlin
    https://developer.android.google.cn/courses/topics/android-basics-kotlin


Java 编程语言和 C++


三年前,当我们宣布正式支持 Kotlin 时,我们并没有忘记众多的 Java 和 C++ Android 开发者。在 Android 11 中,我们力求不断改进对这两种语言的支持。在 Android 11 Beta 中,我们使用来自 OpenJDK 9、10 和 11 的许多新 API 升级了 Java 库支持。我们还在 Android Studio 4.0 中推出了 Java 库 "脱糖",这样一来,即使在较低版本的 Android 设备上也可以轻松使用许多较新的 Java API。想对那些要求在较低版本的设备上支持 java.time 的开发者说,我们听到了大家强烈的呼声,并且已经实现。有关如何使用这些较新 API 的所有最新信息,请查看 Murat Yener 的演讲对较新 Java API 的支持 (Support for newer Java APIs)。对于 Android 11,我们还更新了 Android 运行时间 (Android runtime),以通过 I/O 预取加快应用的启动速度。

  • 对较新 Java API 的支持
    https://youtu.be/heCvGfOGH0s
  • I/O 预取
    https://medium.com/androiddevelopers/improving-app-startup-with-i-o-prefetching-62fbdb9c9020

C++ 开发者的体验也在不断改善。Android 11 包括对原生工具链的更新,其中包括更出色的配置文件导向优化 (PGO) 工具以及对 Android Studio 4.0 中原生依赖性管理的改进。


  • 配置文件导向优化 (PGO) 
    https://medium.com/androiddevelopers/pgo-for-native-android-applications-1a48a99e95d0
  • 对 Android Studio 4.0 中原生依赖性管理的改进
    https://android-developers.googleblog.com/2020/02/native-dependencies-in-android-studio-40.html


不断改进的工具链


最后,我们将持续改进 Android Studio 中的 D8 和 R8 编译器。Android Studio 内置了对 R8 压缩器的支持,可帮助您降低应用的内存占用空间,从而提高用户的安装量和留存率。我们最近还开始支持使用 R8 缩小 Kotlin 库和使用 Kotlin 反射的应用。有关更多信息,请查看 Mads Ager 和 Morten Krogh-Jespersen 的最新文章。


  • R8 收缩器
    https://developer.android.google.cn/studio/build/shrink-code
  • 最新文章
    https://medium.com/androiddevelopers/shrinking-kotlin-libraries-and-applications-using-kotlin-reflection-with-r8-6fe0a0e2d115


更多精彩


您可以查看 #11WeeksOfAndroid 视频内容的完整播放列表,或点击阅读原文前往官方网站详细了解更多主题。我们将持续聚焦更多的新领域,敬请留意,也请继续关注我们,期待您的反馈。感谢您与我们相伴前行!

  • 完整播放列表
    https://www.youtube.com/user/androiddevelopers
  • 了解更多主题
    http://developer.android.google.cn/android11
  • 敬请留意
    https://android-developers.googleblog.com/


推荐阅读






 点击屏末 | 阅读原文 | 即刻前往官方网站详细了解每期主题



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存