安卓开发
一、项目配置
运行的时候,要改下配置文件
build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.3"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
maven { url 'https://maven.aliyun.com/repository/public'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
X、Q&A
1.安卓app我看用的是java语言,为啥我听说还有用flutter写的,原生java又是什么概念
一、原生Java开发(Native Java)
- 本质 :
- 使用Android SDK提供的API和工具进行开发
- 传统安卓开发方式,直接调用系统底层功能
- 现代开发已逐渐转向Kotlin(官方推荐),但Java仍被广泛支持
- 特点 :
- 性能最优 :直接编译为机器码,无中间层损耗
- 深度整合 :完美适配Android系统特性(如通知系统、硬件传感器)
- 开发成本 :需单独维护Android/iOS两套代码(iOS用Swift/Objective-C)
- 典型场景 :
- 对性能要求极高的应用(游戏、图像处理)
- 需要深度调用系统级功能的场景(设备管理、底层网络)
二、Flutter框架开发
- 技术特性 :
- 谷歌开源的跨平台框架(2017年发布)
- 使用Dart语言开发,单代码库适配多平台
- 自带渲染引擎,不依赖原生UI组件
- 核心优势 :
- 开发效率 :一套代码同时生成Android/iOS/Web/Linux等版本
- UI一致性 :像素级渲染控制,避免不同平台UI差异
- 热重载 :实时查看代码修改效果(提升30-50%开发效率)
- 性能表现 :
- 通过Skia引擎直接绘制UI,接近原生性能(约90%原生流畅度)
- 复杂动画/计算密集型场景可能略逊于原生
三、技术选型对比
维度 | 原生开发 | Flutter |
---|---|---|
开发效率 | 低(需维护多平台) | 高(单代码库) |
性能表现 | 优异(接近硬件极限) | 优秀(轻微抽象层损耗) |
UI一致性 | 需适配各平台规范 | 完全统一的视觉效果 |
社区生态 | 成熟(10年以上积累) | 快速发展(200w+开发者) |
适用场景 | 高性能/系统级应用 | 多平台通用型应用 |
四、行业趋势洞察
- 原生开发 :
- 逐步转向Kotlin(Android)和Swift(iOS)
- 重点应用于需要极致性能的垂直领域(如AR/VR、金融科技)
- 跨平台方案 :
- Flutter已成为增长最快的框架(2023年Stack Overflow调查:46%开发者采用)
- React Native仍占35%市场份额,但Flutter增速更快
- 混合模式 :
- 头部应用(如微信、支付宝)采用「原生+跨平台」混合架构
- 性能敏感模块用原生实现,业务功能用跨平台提升效率
建议根据项目需求选择:
- 需要快速验证MVP或开发资源有限 → Flutter
- 追求极致性能或深度系统集成 → 原生开发
- 大型复杂项目 → 混合架构(如闲鱼App的Flutter+Native方案)
React Native 是 Facebook(现 Meta)于 2015 年推出的跨平台移动应用开发框架 ,它基于 React 的核心思想,但将目标从 Web 前端扩展到了移动端。以下是关键概念和对比分析:
2.React Native又是什么东西,我只知道react和vue都是web前端的框架
一、React Native 的核心特性
-
技术基础 :
- 使用 JavaScript + React 语法 开发,但最终渲染的是原生 UI 组件 (非 WebView 或 HTML)
- 通过 "桥接机制"(Bridge)调用原生模块(如摄像头、GPS)
-
与 Web React 的区别 :
Web React React Native 渲染目标 浏览器 DOM 原生 iOS/Android 组件 样式系统 CSS 类 CSS 的 JavaScript 对象 组件库 <div>
,<span>
<View>
,<Text>
-
开发体验 :
- 支持热重载(Hot Reloading)
- 可直接调用原生代码(通过 Native Modules)
- 社区生态丰富(npm 包兼容性较好)
二、与 Flutter 的关键对比
维度 | React Native | Flutter |
---|---|---|
语言 | JavaScript/TypeScript | Dart |
渲染引擎 | 依赖原生组件(通过 Bridge 通信) | 自绘引擎(Skia),不依赖原生 UI |
性能 | 接近原生(复杂场景可能卡顿) | 更接近原生(约 90% 原生性能) |
UI 一致性 | 需适配平台差异(如导航栏样式) | 完全统一的像素级控制 |
学习曲线 | 熟悉 React 的开发者可快速上手 | 需学习 Dart 和全新框架体系 |
三、典型应用场景
- 适合 React Native :
- 业务逻辑复杂但对图形性能要求不高的场景(如电商、社交、工具类 App)
- 需要快速迭代且团队熟悉 JavaScript 生态
- 需要动态更新能力(通过 CodePush 等热更新方案)
- 不适合 React Native :
- 高度依赖原生功能(如 AR/VR、复杂动画)
- 对启动速度有极致要求(Bridge 通信存在延迟)
四、行业应用案例
- 成功案例 :
- Facebook 主应用(部分模块)
- Instagram(完全由 RN 重构)
- Discord(逐步迁移到 Flutter,但早期使用 RN)
- 特斯拉车载系统(部分界面)
- 局限性案例 :
- Airbnb(2018 年弃用 RN,因性能和维护成本问题)
- Udemy(从 RN 迁移回原生开发)
五、技术选型建议
需求场景 | 推荐方案 |
---|---|
团队已有 Web 前端经验 | React Native |
需要最高性能和 UI 控制力 | 原生开发(Swift/Kotlin) |
需要同时覆盖移动端和桌面端 | Flutter |
快速验证 MVP 产品 | React Native 或 Flutter |
六、发展趋势(2023 年)
- React Native 的改进 :
- 新架构(Fabric + TurboModules + JSI)大幅提升性能
- 支持同步执行和直接内存访问
- 微软等大厂持续贡献代码
- 与 Flutter 的竞争 :
- Flutter 在性能和一致性上占优
- React Native 在生态和灵活性上占优
- 混合开发模式 :
- 头部应用(如美团、携程)采用「原生 + React Native」混合架构
- 关键路径用原生,非核心功能用跨平台框架
关键总结
- React Native 是 Web 技术栈向移动端的延伸,适合已有前端团队 的渐进式移动开发
- Flutter 是更彻底的跨平台方案,适合追求完全一致体验 的全新项目
- 原生开发 仍是性能敏感型场景的终极选择
如果团队熟悉 React 生态,React Native 可显著降低移动端开发门槛;若追求最佳性能和多平台覆盖,Flutter 是更现代的选择。