楼主是大一学生,本身在编程以及计算机科学方面有一定的基础,比较熟悉 Python 和 Web 开发;编译型语言方面对 C++尚有一定了解不过不如 Python 熟练。目前出于兴趣原因,想学习开发 Android 应用,有几个问题想请教一下各位大佬们:
(问题 2 算是对问题 1 的补充。我有了解过 Flutter,如果我的理解没错的话它在布局方面确实能带来很大的提升,但在与 Android 系统交互方面似乎并没有提供什么帮助。鉴于 Android 之前的主要开发语言还是 Java,如果我希望能开发系统级的 Android 应用,是不是一定要学习 Java ?)
感谢指点!
1
wly19960911 2019-05-06 20:13:53 +08:00 1
跨平台避不开原生开发,跨平台很多时候系统差异,调用的 api 和操作都不一样,在跨平台的语言里面是没法直接处理的。文件处理,各种系统数据获取、通知,原生的 api 这怎么都得知道,但是至少你在画 UI 上功夫可以减不少,但是仍旧有坑。
这个就直接回答了 1,2 两个问题了。而且基于 dart 的单线程有坑,执行耗时操作的时候卡 UI (比如压缩图片),实际上很多时候还是调用了原生的,只是做了通信而已。 第三个问题,可以学习,至少目前企业开发后端和各种面向对象知识可以学习下,多看多接触,对自己以后发展很有帮助。 |
2
liuhuansir 2019-05-06 20:14:26 +08:00 1
完全没必要学 Android 开发,你才大一,基础更重要,可以继续深耕 Python 和 Web 开发,有时间可以学学 Java,说不定你等毕业 Dart/Flutter 已经黄了
|
3
BlockHeader 2019-05-06 20:17:19 +08:00 1
我从 Android 2.0 Eclair 开始看 Android 的源代码,我写过 Android 原生 App,也用过 React Native 写过 App。以下是我的答案:
1. 目前学习 Android 开发还需要学习 Java (以及传统的 Android 应用开发方式)吗? 最好是学习一下传统的 Android 应用开发(最起码要了解)。因为你毕竟是在 Android 系统上,需要理解 Android App 的生命周期,各种术语:Activity,Service,Provider,Intent 等等。 2. Dart/Flutter 是否足以开发系统级的 Android 应用(如冰箱 存储重定向等),还是说必须涉及 Java ? Flutter/Dart 我没有用过。我用过 React Native。React Native 是用 jsx,实现一套代码,通过 React Native 编译成两个平台的原生 App。在实现一些和系统强相关的功能的时候,可能需要自己实现 jsx 到 Android 的组件模块。实现 Android 模块,积极需要使用 Java 或者 Kotlin。 3. 如果不研究 Android 开发,是否有额外学习 Java 的必要? 除了开发 Android 应用程序,还有其他开发是可能用到 java 的。有时间,还是学学为好。当然,最好和你正在做的事情或者想要做的事情结合起来,带着问题学习,效率可能高些。 |
4
zagfai 2019-05-06 20:44:29 +08:00
@liuhuansir Dart 不是一两年的事情了,在还没有 flutter 的时候我就看好 dart。还是看有没有资源投入吧。
|
6
BCy66drFCvk1Ou87 2019-05-06 20:47:25 +08:00 via Android
java 能造航母
|
7
hhecoder 2019-05-06 20:54:11 +08:00
1. 假设你想找安卓开发工作,学 Java 开发安卓吧。
2. 假设你想快速开发一个安卓 APP,学 Java 开发安卓吧。 3. 假设你想跨平台,学 react native 吧 4. 其他,学 Java 开发安卓吧。 |
8
laogui 2019-05-06 20:54:39 +08:00 via Android 1
目前 Flutter 只适合画界面,想深入学习系统级别的东西还得学原生。
|
9
nicevar 2019-05-06 21:00:52 +08:00
学好 Java 就够了,什么跨平台新语言都是一些胡里花哨的东西,学好了一门语言其他语言基本上不在话下。
如果你只会 Flutter/Dart 是做不了 Android 开发的,当然写个按钮弹个 hello world 没啥问题 |
10
Raisu 2019-05-06 21:42:55 +08:00
不要学后面那两个,要用看看文档就好了,大一应该打好基础啊,国外的教材公开课看一看
|
12
glumess 2019-05-07 08:52:19 +08:00 1
可以学学多媒体相关的,音视频的内容会比较持久一点,可以看看我的博客 glumes.com 也是在做这方面的内容
|
13
liang7878 2019-05-07 10:23:19 +08:00
出于兴趣学习的话只要学学 flutter 就行了,学习门槛低,能够快速出成果,有助于保持你的学习热情,后续如果做的东西涉及到底层或者原生系统的内容再系统性的学习,大一能够做出成果对保持学习热情非常重要。另外做这些的时候一定不要放下对基础课程(组成原理,网络,编译原理,数据库,etc.)的学习,不要因为做了一两个 app 就沾沾自喜,这样就差不多了,原生这块儿晚点再学没事。
|
14
Lin0936 2019-05-07 11:17:21 +08:00
既然是兴趣当然是都学学看了。
|
15
motecshine 2019-05-07 12:59:02 +08:00
基础不扎实走不远, 语言只是工具. 深耕一个领域才是最好的.
|
16
scar263 2019-05-07 15:35:37 +08:00
Flutter 值得学习和使用。
|
17
zagfai 2019-05-07 23:21:31 +08:00
@murmur 还是得看资源投入吧,chromebook 其实已经满足我需求了,外形好看点,足够轻 67 百 gram 的样子,我会买。
|
18
lizhuoli 2019-05-08 02:01:29 +08:00 via iPhone
兴趣用 Flutter,找工作看 Java
不过鉴于你说是大一,而且大概率不会本科工作,建议学好数学转 ML 岗位 |
19
whp1473 2019-05-08 14:31:05 +08:00
建议学好一门语言,Java 或 C++,其他选学工具型语言 shel、python,前端 js、echart、vue、flutter。
非常建议学好数据结构和算法、计算机组成原理、通信协议 TCP/IP、编译原理(选学)、离散数学、概率论、高等数学。 其他花里胡哨的都是壳子。 |