V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magic3584
V2EX  ›  Android

如何入门 Android 开发

  •  
  •   magic3584 · 3 天前 via iPhone · 4494 次点击

    先不说是不是夕阳行业了,不会 Android 开发我肯定马上失业了。

    入行 10 年,经历过 OC 、swift 、RN 、Vue 、flutter ,目前 kotlin&java ( Android )我感觉最难了。什么 binding 、adpapter 、onresult 、依赖注入啥的,往往崩溃于点了一个方法发现跳转到了库里面,流程直接中断了。

    已经看了郭霖的《第一行代码》,有了一些了解但不多。网上搜视频都是几年前的。

    求大佬推荐下视频和书籍

    第 1 条附言  ·  3 天前
    目前是维护现有项目,所以文中的 binding 、adpapter 、onresult 、依赖注入 都是现实中遇到的。
    67 条回复    2025-01-17 12:53:56 +08:00
    liuzimin
        2
    liuzimin  
       3 天前
    “往往崩溃于点了一个方法发现跳转到了库里面,流程直接中断了”

    你别点库方法就不会呀,你这种是手撕源码的玩法了。
    Lockroach
        3
    Lockroach  
       3 天前
    学过前端确实感觉安卓明显更难,心智负担更重一些。我学习的时候也是看第一行代码入门,然后自己搞一些开发玩具项目巩固一下。
    另外,感觉安卓的文档挺奇怪的,不是很好理解,而且会在讲解概念 A 的时候提到概念 B 和 C 。点进概念可能还会进入未翻译的 reference
    duhb
        4
    duhb  
       3 天前   ❤️ 1
    挺逗的,入行 10 年,写过这么多语言。竟然不知道怎么学习一门新技术?
    xubingok
        5
    xubingok  
       3 天前   ❤️ 3
    2012 年入门 android,2020 年转前端...没想到还有人跟我走反方向的路哈哈.

    视频和书籍好像也没看什么,你说的问题其实就是几个概念而已.

    binding 是那个 databinding 吧,在 xml 里面直接塞数据.就是 mvvm 的一种实现形式而已.现在感觉挺像 vue 的模板语法.

    adapter 是适配器模式.在 android 里面大量应用.主要用于大量重复元素时的 UI 复用,流畅性吊打 web 的显著特征之一.

    onresult 是不是那个 activity 跳转后的数据接收.这只能说就是 android 的一种机制了.类似还有很多 onXXX 之类的.以前好像有句话很好的反应 android 里面的这种回调机制:'Don't Call Me I'll Call You'.activity 都是反射创建的,到了某个生命周期,自然会触发对应的方法通知你.

    依赖注入是面向对象的概念.项目解耦的大杀器.这个就不多解释了.

    关于调试,你可以找个原生系统的手机,当时我用的是 pixel 系列.把编译 sdk 调整为跟开发机相同的版本,这样 debug 时可以直接跳转到源码里面去,不会出现那种国产机魔改系统导致跳转源码后行数对不上的场面.
    qwwuyu
        6
    qwwuyu  
       3 天前
    初学难点估计还是熟悉 API,刚开始可以避开依赖注入路由这些不必要的.
    找简单的开源项目跑起来,读下流程,照着写,拷贝一些工具和组件到自己项目.
    快速入手就找一个基础框架,直接删删改改去写代码.
    很多问题 AI 大部分都可以解决,难点还是经验 UI 业务那些...
    DIO
        7
    DIO  
       3 天前
    一定要用新特性吗,阅读源码也太高端了。安卓这坨东西谷歌自己都整不明白吧,三年一小更五年一大更,没有深度学习的必要和价值,能把功能实现项目跑起来就算成功。

    https://www.douban.com/doulist/153038054/
    godloveplay
        8
    godloveplay  
       3 天前
    我写 java 的,前天有需求要搞 android pda 扫码,上传到服务端然后校验数据。 用 deepseek v3 ,上传了第三方扫码的 demo 作为附件,然后开始让它给我来点 activity 代码和布局文件。
    一天就弄完了,感觉再和他一起练习练习,就能入门了。
    jrtzxh020
        9
    jrtzxh020  
       3 天前
    前段时间找过一段时间,基本没有新的书籍,也是只能看第一行代码。。视频的话 B 站也只有零零碎碎的。现在没啥人搞安卓课程
    wnpllrzodiac
        10
    wnpllrzodiac  
       3 天前 via Android
    鸿蒙啊,安卓都要没了
    wnpllrzodiac
        11
    wnpllrzodiac  
       3 天前 via Android
    现在都是 flutter uniapp ,原生没人搞了
    godloveplay
        12
    godloveplay  
       3 天前
    前置 翻了一下 了解了一下基础内容
    《第一行代码》第二版
    b 站 up: https://space.bilibili.com/204248002?spm_id_from=333.337.0.0
    meteor957
        13
    meteor957  
       3 天前 via Android
    有些技术都要被淘汰了,学了也浪费时间。compose 能代替不少老的技术
    magic3584
        14
    magic3584  
    OP
       3 天前   ❤️ 8
    @duhb #4
    请尽量让您的回复有帮助。
    ------------------------
    如果没有的话,可以省点铜币。
    magic3584
        15
    magic3584  
    OP
       3 天前
    @liuzimin #2
    主要是一些代理和回调方法,不像 iOS 那样明确的指定 delegate,所以不知道回调的落点在哪里
    zzjun
        16
    zzjun  
       3 天前
    用 Compose 呗
    magic3584
        17
    magic3584  
    OP
       3 天前
    @xubingok #5
    @qwwuyu #6
    目前是接着之前项目改,主题里说的问题项目里都有,所以新手看着脑袋大
    syubo2810
        18
    syubo2810  
       3 天前
    既然都是新学,建议鸿蒙一起学了
    ice000
        19
    ice000  
       3 天前
    你这有现成的项目哇,先从捋代码流程,改 Bug 入手,Android studio debug 功能我觉得很友好,除了 native 部分
    werls
        20
    werls  
       3 天前
    现在基本都是 Jetpack compose 和 Android framework 、新学的起码也是 Flutter 吧。
    hjw45611
        21
    hjw45611  
       3 天前
    Android 原生开发已经入行 9 年了,要说最新的教学视频那估计没有,毕竟零零散散每年都出新特性新框架
    建议看第一行代码,先用 java 写,了解四大组件生命周期之类的,再把基础的组件,数据库,网络请求都搞明白了,再代码转成 kotlin ,也就知道 kotlin 基本怎么写了,后期搜搜 kotlin 的语法糖,还有一些扩展库。最后那些 mvp 、mvvm 都算是优化开发的架构,找找官方 demo 看看就可以了
    hohoho
        22
    hohoho  
       3 天前
    楼主应该是不习惯或不适应。多写写代码,熟悉了就好了,毕竟项目需求开发第一,刚开始耐心慢点。至于原理,放到后面再了解、深究呗
    Esen
        23
    Esen  
       3 天前
    用 compose 吧,简单多了,老项目也能 compose 混合开发
    location123
        24
    location123  
       3 天前
    初学就看官方文档吧 https://developer.android.google.cn/guide/components/fundamentals?hl=zh-cn
    推荐一个 B 站 up 主 张大锤_ bigchuii 有基本的 Android Jetpack 基础入门教程
    location123
        25
    location123  
       3 天前
    时间足够的话学 compose 会好很多
    superkeke
        26
    superkeke  
       3 天前
    相比 app ,我经常感慨,web 端真是又简单又爽
    FireKey
        27
    FireKey  
       3 天前
    只是开发 app 不需要学,用 ai 就能搞定.已经尝试过用 windsurf 写一个完整的安卓应用,在我对安卓一窍不通的情况下.
    xloger
        28
    xloger  
       3 天前   ❤️ 3
    你主要的困难不在于“入门 Android”,看着你已经入门了。
    你的困难点在于并不是从头写一个 Android 项目(这点我相信你问题不大了),而是接手一个成熟项目,它里面已经有很多进阶的用法了。而每个都是要单独学习的(虽然拆开来并不高)。
    建议你先整理一下这个项目的技术栈,然后了解一下它们分别是为了解决什么样的问题。有了思路后才更有方向。

    Binding:我默认你说的是 ViewBinding 了。因为 Android 没有采用 DSL 写 UI ,而是 XML 单独实现样式,这个在当年比较流行。那么 Fragment 需要操控 XML 里的东西,以前需要手动 findViewById ,现在用 ViewBinding 就可以简化这个流程。
    如果是 DataBinding ,那我觉得那破玩意并不好用,少写一点点代码反而整体更绕了更难查了。

    Adapter:写列表,传统方式自然是直接一个循环一把梭,你用 LinearVIew 手动加 ViewView
    cenbiq
        29
    cenbiq  
       3 天前
    compose ,老的那套别学了,我也是前端兼容会写 Android ,写 compose 贼 6 很像 react hooks ,老的那套 xml 、adapter 什么的写不了一点,而且也快淘汰了
    HojiOShi
        30
    HojiOShi  
       3 天前
    @magic3584 #17 新学的话,如果是开发新项目那还好说,维护原有的项目实在是太复杂了,只能说祝你好运。我目前维护的项目十年前的老东西都还有,还不注重复用,写得这一坨那一坨的。只能先申请两个月的时间用于熟悉项目。
    xloger
        31
    xloger  
       3 天前
    @xloger

    Adapter:写列表,传统方式自然是直接一个循环一把梭,你用 LinearView 手动加 ViewView 一样能实现相关效果。而 RecycleView 加 Adapter 实际上是为了性能更好,复用 View ,所以才整出这个弯弯绕绕。适应一下就好。

    OnResult:不确定你说的是生命周期还是 RxJava 相关的。前者那还是能肉眼感受到是降低理解负担的,后者碰巧我一直没用过就不说了。

    依赖注入:依赖注入用得不好确实会比较困扰,但是它有助于培养你写代码的习惯。它很重要的一点是“职责分离”,你需要先了解整个项目的结构,然后遇到 Bug 了能快速定位出属于某个模块,而不是从崩溃处一路看过来然后感觉怎么这么绕啊。
    thingingWoods
        32
    thingingWoods  
       3 天前
    cursor
    xz410236056
        33
    xz410236056  
       3 天前
    iOS 转安卓??? iOS 完犊子了也绝不可能是安卓干掉的,你还不如转前端呢

    当然转机器学习是最好的
    Bootis
        34
    Bootis  
       3 天前
    拉一个开源项目用 cursor 看和改,不会就问 ai ,有 ai 这个无限耐心的老师没有学不会的语言的框架。
    Kamiyu0087
        35
    Kamiyu0087  
       3 天前   ❤️ 1
    如果用 Compose 的话,binding 完全不用学,
    如果用传统 xml, 那用 viewBinding 就行了,dataBinding 推荐不了一点
    Adapter 要学一下
    依赖注入不学也没啥问题
    southpark
        36
    southpark  
       3 天前
    @wnpllrzodiac #11 羡慕啊,说的都对
    LLLeo
        37
    LLLeo  
       3 天前
    你是有编程基础的了,建议是 github 上找个适合的项目学,跟着自己做一个类似的。
    不过现在都用 Compose 了,又是另外一套东西了。
    monkeylmj
        38
    monkeylmj  
       3 天前
    现在入门简单多了,可以利用 ChatGPT 结合实际项目,不会的技术点问下 AI ,大概的框架差异都能给你讲通,不像之前还得搜索引擎搜索过滤半天。
    tool2dx
        39
    tool2dx  
       3 天前
    有 GPT 后,学习门槛变非常低,只要你肯花时间学就行了,
    iOCZS
        40
    iOCZS  
       3 天前
    为什么不用跨平台的,flutter 或者 RN ?
    CharmingCheung
        41
    CharmingCheung  
       3 天前
    我入行的时候 Retrofit 都还没面世,最流行的图片库还是 UIL ,都是这样一步一步过来的。
    先学好基础,从基本的 MVC 开始写,搞明白四大组件、权限与运行时权限、手撸 xml 、手写 findViewById 、随心所欲写自定义 View 做起。
    你说的好多都是后面才有的高级封装或者是新玩法。这些玩意不会,基础学好了也不影响你做出一个合格的 App ,你回过头来回发现写 RN 、Flutter 或者 Compose 遇到没有的第三方库或者 View 组件都可以自己撸一个。
    ChangQin
        42
    ChangQin  
       3 天前
    新手直接学 Compose 开发吧,跟 react 的语法很像,看这个 https://developer.android.google.cn/courses/pathways/compose?hl=zh-cn
    rxswift
        43
    rxswift  
       3 天前
    跟 ChatGPT 学的
    cokepro
        44
    cokepro  
       3 天前
    曾经也是为了维护一个历史项目,自学的 android ,然后用 jetpack 重写了整个项目。学习路径:《第一行代码》第三版( Kotlin )+bilibili 的 Jetpack 视频。https://space.bilibili.com/137860026/lists 这 2 个教程看完入门应该是没问题了。
    mythace
        45
    mythace  
       2 天前
    直接外包给我吧 我给你维护
    kenshinhu
        46
    kenshinhu  
       2 天前
    如果你熟悉 swift 的话,那写 kotlin 应该不也难。
    现在把 kotlin 的代码迁移到 swift ,发现使用 swift 的心智负担也蛮大的
    cpalead
        47
    cpalead  
       2 天前
    别学了,找不到工作的
    Jinnrry
        48
    Jinnrry  
       2 天前 via iPhone
    第一行代码写得很好啊,我大学的时候,只有 java 基础就能看懂,而且看完就能写出东西。

    你有这么多基础不应该学不明白啊。安卓这些基础概念很好懂,难的是各种 api 的傻逼兼容性,这个版本好好的,下个版本就不让用了,又得换新的
    mioktiar56
        49
    mioktiar56  
       2 天前
    找个开源项目,依葫芦画瓢就会了
    Folayi
        50
    Folayi  
       2 天前
    第一行代码随便一看,三四天看完之后直接啃项目就行,哪块代码有疑惑直接 GPT 问,GPT 比现在的“技术书”语言直白多了,效率还高。
    yatoooon
        51
    yatoooon  
       2 天前 via Android
    Android 生态已经碎完了,茴字有十八种写法
    liaosong
        52
    liaosong  
       2 天前
    。。十年前问这个问题差不多
    ThomasKim
        53
    ThomasKim  
       2 天前
    《第一行代码》不仅仅要看完,里面的代码自己可以不看示例代码,完全可以借助文档可以敲出来。

    到这个程度后,去 GitHub 上找一个使用现代流行框架并且 star 人数比较高的项目模仿,一般这类项目都会把当前主流的技术加进去,可以像素级模仿,也可以根据自己需要的部分去模仿,这么做的目的是为了熟悉市面上的主流技术栈。

    完成上一步后,安卓开发基础有了,主流技术栈也知道了,接着就是写一个 APP ,而且是写一个自己比较常用的 APP ,当年我学习跨平台的时候,当时我自己使用率最高的 APP 是《滴答清单》,然后就自己写个脑图,把功能模块拆分一下,然后一个一个完成(实际上也就完成个六七成,杂七杂八功能太多了),当然媲美原版 APP 是不可能的,又没有专门的设计师,而且哪怕是我每天都在使用,在写代码的时候发现,还有不少功能我都没用过,就这样一步一步写下去,中途会无数次要去找搜索引擎,你可能运气好,因为现在 AI 满大街走了,我那会儿只能去谷歌找答案。
    timelessg
        54
    timelessg  
       2 天前 via Android
    别看 Android view 了,直接上 compose
    a1210968738
        55
    a1210968738  
       2 天前 via Android   ❤️ 2
    楼主说了维护现有项目,这么多人说别用 view 用 compose 的…
    接触一个新项目,app 某个界面没法找到具体代码位置的,可以尝试接入 CodeLocator ( https://github.com/bytedance/CodeLocator ),方便快速找到你看到的每一处 UI 的相关代码,这样可以在没有文档没人指导的情况下,快速按需熟悉项目。
    LanhuaMa
        56
    LanhuaMa  
       2 天前
    @wnpllrzodiac #10 就是。学什么英文,再过二十年要用红旗插满全世界
    cnliangwei
        57
    cnliangwei  
       2 天前   ❤️ 1
    你可以写一个最简单的 TODO 小项目出来,然后过程中把用到的技术一个个摸透。我当初就是这么学的。当然这种方式学可能不够系统,但是你入门了,再去系统学会熟路很多。我当初的目的是为了实现我想要的产品功能,不是为了找工作,所以不在乎是否系统,能达到目的就行。如果为了找工作,还是要系统点,毕竟要回答面试中各种可能的刁钻问题
    daisyliudi
        58
    daisyliudi  
       2 天前
    @ThomasKim 你说的最靠谱。点赞收藏
    OneLiteCore
        59
    OneLiteCore  
       2 天前   ❤️ 1
    8 年 Android 开发表示路过。现在的话建议起步就学 Compose 了,最近也有 Compose 兼容鸿蒙的新闻所以这是一个能够包揽移动端的技术。但并不是说原生的开发就没用了,对于权限、通知栏或者桌面小部件这种和系统强相关的功能的话还是需要有相应的原生开发的知识的。如果如果想要入门原生开发的话我不建议看书而建议直接实战,去开发一个 TODO 或者记事本,这样列表、数据库或者文件 IO 、异步加载和 View 基本都接触了,遇到问题了再去找书或者找博客来解决,解决问题的过程就是学习的过程。
    magic3584
        60
    magic3584  
    OP
       1 天前
    @a1210968738 #55
    感谢大佬,这个最需要!每次找哪个页面最费时间。
    不过 里面 Lancet 用现在 8.7 的 gradle 还能装上吗?我试了半天一直失败,找不到这个库
    ninjamk200
        61
    ninjamk200  
       1 天前
    看了下发帖时间
    a1210968738
        62
    a1210968738  
       1 天前 via Android
    @magic3584 找不到库应该和 gradle 版本无关,是不是没有配置相关的 repository ?
    behindeye
        63
    behindeye  
       1 天前
    讲真,光 android studio 那套 gradle 就能把入门的很多人搞垮,再加上 java 环境、kotlin 版本、甚至一些 compact 库,就问你晕不晕
    magic3584
        64
    magic3584  
    OP
       1 天前
    @a1210968738 #62
    不清楚,那个库好几年没更新了,gradle 差了好多版本,不知道还能不能用
    a1210968738
        65
    a1210968738  
       1 天前 via Android
    @behindeye 你现在用起来有什么报错信息吗?
    behindeye
        66
    behindeye  
       1 天前
    @a1210968738 我可以解决,我指的是刚入门新手的,不知道怎么处理
    a1210968738
        67
    a1210968738  
       1 天前 via Android
    @behindeye 回复错人了,我本来要回复 op 的😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2872 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:02 · PVG 14:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.