[译] Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?

本文探讨了不同移动开发方式如Java、Kotlin、ReactNative和Flutter对Apk文件大小的影响,指出在选择开发框架时需考虑实际需求和性能优化。作者还提供了学习资源链接,鼓励开发者系统学习和提升技能。
摘要由CSDN通过智能技术生成

移动开发发展至今,已经可以接受很多方式来开发 App,例如基于特定平台的原生开发方式(使用 Java 或者 Kotlin 开发 Android,使用 Objective-C 或者 Swift 开发 iOS);基于 Facebook 提供的 ReactNative;基于 Walmart 的 Electrode Native;基于 Ionic 框架;使用 Unity 开发一些特定的 App,以及最近 Google 发布的 Flutter.io 框架来开发 App。

那你有没有思考过,这些库和框架,是否会对你的 App 大小有所影响?

我们来分别分析以这些方式编写的应用程序的 Apk 文件,这些应用程序非常的简单,只包含顶部的标题和屏幕中心的文本控件(Hello World)。这是一个最低限度的基本 App。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先对于这个测试,我会创建四个不同版本的 Apk。分别是:Java、Kotlin、React Native 和 Flutter。Android Api Level 均为 27。

然后使用 Android Studio 编译成 Release 包,使用对应的 cli 编译 React Native 和 Flutter。

它们将使用默认的 proguard 配置,最后我们使用 Android Studio 自带的 Analyze APK 分析这些 Apk。

Java(539 KB)

首先使用 Java 来开始这次实验,使用 Java 开发 Android 算是最常规也是最简单的一种方式。正如前面描述的那样,由于我们仅仅使用了 Java 和 Android 框架来创建这个应用程序,所以它将是最小的,唯一的依赖是 Android 支持库,在这里你可以看到它占用了整个 Apk 内相当多的空间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以通过删除一些依赖库,使用 Activity 而不是 AppCompatActivity 来进一步降低应用程序的大小。

Kotlin(550KB)

接下来,我们使用 Kotlin。如果你使用 Java 编写过很长一段时间的代码,我想 Kotlin 应该会让你眼前一亮。Kotlin 应用程序的 Release 版本,包含了我们在 Java APK 中能看到的所有内容,以及一些基于 Kotlin 的语法糖信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

React Native(7MB)

如果你有前端(Web)的开发经验,并希望使用 JavaScript 来开发 App,那么 React Native 是一个不错的选择。

如果你希望在已发布的 App 上,进行更快的功能迭代,使用 React Native 也可以让你不必为每个小改动都发布应用市场。

由 React Native 生成的 Release apk 在 classes.dex 文件中有几个类,这些类有 12193 个针对此应用程序的引用方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

它还在 x86armeabi-v7alib 目录中添加了一些 so 库。总共添加了大约 6.4 MB 的空间。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Flutter(7.5MB)

Flutter 的 cli 生成的 Release 版本的应用程序中,包含 C / C ++ 引擎和 Dart VM,它们构成了 Apk 的几乎所有部分。该应用程序直接使用本机指令集运行,不涉及任何解释器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文里介绍的几种编写 App 的方法,都存在优缺点,在实际工作中,应该根据需求选择适合的方式。你还可以混合搭配这些框架,仅仅用它们的优点来开发 App 的部分功能。

例如,如果你想在 iOS 和 Android 应用程序之间共享代码,你可以尝试使用 React Native 创建某些组件,具体操作请查看 React Native 或 Flutter.io 的官方文档,如果你只关注 Android ,并且 Apk 大小是你一个比较重要的指标,你可以使用 Java 或 Kotlin。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

架构篇

《Jetpack全家桶打造全新Google标准架构模式》

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kotlin是一种现代化的静态类型编语言,它运行在Java虚拟机(JVM)上,并且可以与Java代码无缝地互操作。Kotlin由JetBrains开发,旨在提供更简洁、更安全、更具表达力的编程语言。 Kotlin具有以下特点: 1. 简洁性:Kotlin简化了很多Java中的冗余代码,例如自动推断类型、空安全等。 2. 互操作性:Kotlin可以与Java代码无缝地集成,可以直接使用Java类库和框架。 3. 安全性:Kotlin引入了空安全机制,可以在编时捕获可能的空指针异常。 4. 函数式编程支持:Kotlin支持函数作为一等公民,可以使用Lambda表达式和高阶函数等函数式编程特性。 5. 扩展函数:Kotlin允许在不修改原始类的情况下为其添加新的函数。 6. 协程支持:Kotlin提供了协程(Coroutines)来简化异步编程,使得代码更加简洁易读。 Flutter是一个跨平台的移动应用开发框架,由Google开发。它使用Dart语言编写,并且可以同时在iOS和Android平台上构建高性能、美观的应用程序。 Flutter具有以下特点: 1. 快速开发Flutter提供了丰富的组件和开发工具,可以快速构建漂亮的用户界面。 2. 跨平台:Flutter可以在iOS和Android平台上运行,使用相同的代码库,减少了开发和维护的工作量。 3. 高性能:Flutter使用自绘引擎,可以直接绘制UI,避免了框架和平台之间的性能损失。 4. 热重载:Flutter支持热重载,可以在开发过程中实时查看修改后的效果,提高开发效率。 5. 响应式框架:Flutter使用响应式框架,可以轻松处理用户输入和状态变化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值