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

大家搞 android 源码开发的工作环境都是怎样的?

  •  
  •   magicls · 2022-09-05 17:52:48 +08:00 · 12117 次点击
    这是一个创建于 802 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现状

    身处手机公司,目前身边 Android framework 开发的同事电脑基本都是 Ubuntu ,但几乎人人都要装虚拟机跑 Windows ,或者自己再搞个 Mac 笔记本放旁边,因为总有 IM 软件或者绿色聊天软件或者刷机工具或者一些内部工具只有 Windows 版的,总之就是没见有人只用一台 Ubuntu 的。

    个人

    我自己在家是搞了一台小电脑跑 Ubuntu 当编译服务器,代码也全在里面,平时 ssh 连上去命令编译,源码目录用 smb 挂出来,平时主用 Mac ,挂载出来之后多少可以改改 bp 文件之类的,简单的文件也可以修改。

    问题

    目前最大的问题是,源码目录里有些项目要用 Android Studio 打开,而 smb 面对这种大且文件数量众多的场景性能非常拉胯。Mac 下挂出目录之后,根目录下执行 source && lunch 都能卡半天,更加别提整个项目导进 Android Studio 了。如果用 VSCode 打开目录的话能好一些,但那样就失去了依赖和代码提示了,几乎也是不能好好开发的状态。

    想问下有没有像我这样只在 Ubuntu 下编译,不主用 Ubuntu 开发的?想知道是怎么搭建开发环境的。

    41 条回复    2022-09-09 09:47:51 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2022-09-05 18:26:09 +08:00
    不知道 idea 的远程开发是否支持安卓,
    值得一试,估计会有些 bug 但能用,可以和当前方案对比一下效果,
    l4ever
        2
    l4ever  
       2022-09-05 19:35:22 +08:00
    工作用 windows, 有专用的编译服务器, vscode 自带的插件(ssh 协议)连接服务器, 修改文件.
    also24
        3
    also24  
       2022-09-05 19:58:05 +08:00
    可以在 ubuntu 下安装 Android Studio ,然后 X Server 转发出来用
    SmaliYu
        4
    SmaliYu  
       2022-09-05 20:00:57 +08:00
    ubuntu 基本满足所有需求,还可以 steam 打 dota 。
    justanetizen
        5
    justanetizen  
       2022-09-05 20:01:16 +08:00
    干过一年 android bsp 开发,不过是大厂,没有专门的看源码的工具,只有各种 email im ,等着芯片厂家给 patch ,牛逼点的,凭感觉找 bug
    magicls
        6
    magicls  
    OP
       2022-09-05 20:30:02 +08:00
    @l4ever #2 VSCode 能完整开发 Android 项目吗?比如 Settings 模块之类的。
    @also24 #3 是个思路,之前用 WSL2 的时候试过这样,但是迫于输入法还有性能等各种问题放弃了,听说 WSL2 跑 GUI 背后就是通过 X Server 转发,不知真假。但我等下还是会看看纯 Ubuntu 用 X Server ,感谢。
    @SmaliYu #4 Ubuntu 确实大部分够用了,怎么说,还是个习惯问题吧。
    @justanetizen #5 膜拜大佬。
    11232as
        7
    11232as  
       2022-09-05 20:33:22 +08:00
    JB 家的 IDE 应该都支持通过 ssh 远程开发了,不过目标机只能是 linux 系统,可以尝试下这个功能。我在内网环境下使用几乎感受不到延迟。
    zagfai
        8
    zagfai  
       2022-09-05 21:33:33 +08:00
    @also24 X server 转发性能如何? VNC 就很拉跨
    nicocho
        9
    nicocho  
       2022-09-05 22:22:40 +08:00
    局域网里 ubuntu + ssh windows ,单个 模块 as 速度还行,整编 就在 ubuntu 下
    771007147
        10
    771007147  
       2022-09-05 22:26:18 +08:00
    工作纯用 Ubuntu 20 ,浏览网页用 Chrome ,沟通用飞书(有 Linux 版),再装个 wine 微信,已经够用了。
    开发还是在 Linux 上更方便,shell 用起来太舒服了。
    771007147
        11
    771007147  
       2022-09-05 22:27:46 +08:00
    @771007147 #10 开发用 VSCode 。远程就是 SSH + tmu + VSCode Remote ,1s 进入工作环境,够用
    darkengine
        12
    darkengine  
       2022-09-05 22:39:34 +08:00
    一台 Ubuntu 用于存放源码以及负责编译,开 samba 服务共享源码目录。

    一台 windows/mac 用于展示,修改代码。
    acplumber
        13
    acplumber  
       2022-09-05 22:58:32 +08:00
    我日常用 Arch Linux 做开发,软件版本比 Ubuntu 要新很多。IM 等软件用 QtScrcpy 把手机屏幕显示在电脑上,当“桌面版”用。
    aheadlead
        14
    aheadlead  
       2022-09-05 23:03:33 +08:00
    以前在 MIUI 工作时,基本都是 ubuntu 14.04 或者 16.04
    大多数都是 vim 一把锁
    xiiix
        15
    xiiix  
       2022-09-05 23:08:37 +08:00
    JetBrain Remote Development + SSH + vscode + Azure Ubuntu VM
    xiiix
        16
    xiiix  
       2022-09-05 23:09:17 +08:00
    再加 mbp
    darkengine
        17
    darkengine  
       2022-09-05 23:18:53 +08:00
    @aheadlead vim 一把那很强了,我们还用 source insight 。。。
    aheadlead
        18
    aheadlead  
       2022-09-05 23:26:20 +08:00
    @darkengine #17 source insight 也用得多啊,还有 opengrok 都挺好的
    看起来很挫逼,用起来也很挫逼,但又不是不能用

    以前在 vim 下狂撸 perfd ,改得飞起
    Android2MCU
        19
    Android2MCU  
       2022-09-05 23:38:15 +08:00
    Android Framework 开发一名, 我是 Ubuntu 主机一台作编译机,主 力开发机是一台 MacBookPro 电脑, 用 vs code 远程到编译机,再加一台 windows 专门用来刷机。建议不要用 Mac 的 samba 导入代码,Mac 的 samba 有个严重的 bug,经常会导致系统卡死。不过 vs code 也有 bug,项目大一点,代码提示,跳转功能都会用不了,基本就是当 notepad 来用了,要写大块代码时比较痛苦,没有代码提示补全
    vigidroid
        20
    vigidroid  
       2022-09-06 06:29:55 +08:00 via Android
    提供个思路可以试试。

    本地和编译服务器都保存一份代码,用 rsync 之类的工具做文件自动同步。本地修改的代码自动同步给 server 。server 用修改后的代码编译,生成的结果文件自动同步回本地。

    有个叫 mainframer 的工具是干这个的,但不维护了,也可以找找其他类似的
    woodyguo77
        21
    woodyguo77  
       2022-09-06 07:54:56 +08:00 via iPhone
    主力:本地 MBP + MacVim ; scp 修改过的文件到 Ubuntu 。
    辅助:ssh 到远程 Ubuntucc + Vim
    偶尔:MacVim ssh 远程编辑

    前两种方式中用 LeaderF 找文件,rg 搜内容;三种方式中都有 YCM 有限的补全,够用了。
    binsys
        22
    binsys  
       2022-09-06 08:40:26 +08:00
    ubuntu+vscode+(vbox+win 有些方案刷机工具只有 win 的)
    magicls
        23
    magicls  
    OP
       2022-09-06 09:24:25 +08:00
    @aheadlead #14 感谢分享,vim 一把梭有点秀哇。
    @darkengine #12 感谢分享。
    @xiiix #15 我去研究下这个组合。
    @Android2MCU #19 确实,目前就是发现 Mac 下 samba 挂出来一步一个卡,而且还是局域网,不知道什么原因。
    @vigidroid #20 感谢分享,是个思路。我研究一下,有结果会来更新。
    @woodyguo77 #21 感谢分享哈~
    @binsys #22 确实,身边很多同事用这种方案也会虚拟机搞个 Win (展锐:你直接报我身份证吧),一方面是有些刷机工具只有 Win ,另一方面因为 Win 的 samba 好像问题少点。
    zapper
        24
    zapper  
       2022-09-06 09:24:30 +08:00
    我用 sublime 直接挂远程 smb 目录,改完 ssh 上远程编译,编完拷回来刷机,慢得一批,正好能刷 v2
    magicls
        25
    magicls  
    OP
       2022-09-06 09:29:59 +08:00
    @zapper #24 你是不是只要小面积改改配置文件什么的?如果要做项目,感觉不导进 Android Studio 根本没法干活儿啊。
    zapper
        26
    zapper  
       2022-09-06 09:34:25 +08:00
    @magicls 改源代码,什么多以太网口支持之类的奇葩功能。本来我也想 AndroidStudio ,但是发现挂不了远程目录,放弃之。
    sadfasdfa
        27
    sadfasdfa  
       2022-09-06 10:07:22 +08:00 via iPhone
    借这个问下,这个行业未来发展方向,迷茫中…
    magicls
        28
    magicls  
    OP
       2022-09-06 10:17:04 +08:00
    @sadfasdfa #27 你说安卓吗?我们团队现在都还在招人,但是从我这边过简历的经历来看,说实话一言难尽。简单来讲,Android 工程师还是要不断精进自己,要么在 app 层做精做透,要么果断往下,往 framework 层扎,我这边太多简历,5 年 8 年 10 年经验的,很多原理一问三不知,干了这么多年活脱脱把自己变成了 API Caller ,这样肯定不行的, 然后只会怪大环境不好。
    sadfasdfa
        29
    sadfasdfa  
       2022-09-06 10:21:10 +08:00 via iPhone
    @magicls rom 开发,现在专注 audio 这块,现在就算把系统玩出花来,未来也好迷茫
    mygame
        30
    mygame  
       2022-09-06 11:17:08 +08:00
    win10+wsl2,
    wsl2 负责编译,每套代码一个虚拟机
    win10 下装 as, 直接导入\\wsl$下代码,转跳断点速度飞起,
    native 代码用 clion, 转跳略慢,但断点同样很爽
    tracyliu
        31
    tracyliu  
       2022-09-06 11:36:26 +08:00
    ubuntu 负责编译以及看代码( AS ),和大规模改动。平时就是一个 mac m2 air 负责冲浪。偶尔传传文件就用 smb 。如果哪天没去公司就开 vpn ssh 过去
    Android2MCU
        32
    Android2MCU  
       2022-09-06 14:47:29 +08:00 via iPhone
    楼上的各位有没有什么 android rom 开发的交流群呀,感觉做这块的都有点封闭,可以一起聊聊编译优化,aosp 又出什么新 bug 了之类的东西呀
    cang00jia
        33
    cang00jia  
       2022-09-06 15:40:19 +08:00
    @magicls 已经成为 API Caller 了,好忧伤啊
    liuw666
        34
    liuw666  
       2022-09-06 15:46:52 +08:00
    忧伤 +1
    xiangyuecn
        35
    xiangyuecn  
       2022-09-06 15:49:03 +08:00
    分布式,就要充分利用分布式的软件🐶🐶🐶🐶

    不然给你配置 128 核+1TB 内存 都没用😂
    zapper
        36
    zapper  
       2022-09-06 15:52:08 +08:00
    @sadfasdfa 我觉得 rom 开发的话机会都往车机、物联网方面走了。而且非一线城市机会超级少
    rrZ2C
        37
    rrZ2C  
       2022-09-06 17:04:29 +08:00
    以前是 ubuntu+Windows 虚拟机
    guoziq09
        38
    guoziq09  
       2022-09-06 17:11:14 +08:00
    膜拜楼上各位大佬。
    SupperMary
        39
    SupperMary  
       2022-09-09 07:36:53 +08:00
    代码放服务器,本地是 windows ,vscode remote-ssh 连到服务器上做代码编辑工作。AS 试过 X11 转发回来但是感觉卡卡的,所以没有继续尝试了。服务器用固态硬盘,日常用和编译都还是很可以的。
    SupperMary
        40
    SupperMary  
       2022-09-09 07:44:11 +08:00
    @Android2MCU Android ROM 市场需求也不像 APP 那样大,国内做的厂家也不多,几个手机厂和几个电视厂,车机应该也还有一些。你想交流这些可能需要主动找人了。

    编译优化问题,个人感觉向源码内添加的东西是按照安卓的 mk 和 bp 规则写的,优化空间就不大。boot ,kernel 这些可以考虑做成预编译的,这部分适配完成之后就很少改了。裁剪 APP 和用不上的模块,以及换更高性能的 CPU/固态硬盘提升会比较明显。

    作为对比,我家里 9600K ,PCIE 固态的台式机编译 Android12 大概 2.5H ,公司的服务器编译大概 40min 。
    magicls
        41
    magicls  
    OP
       2022-09-09 09:47:51 +08:00
    @SupperMary #40 感谢分享。关于行业现状确实。我个人是从上层 app 转到框架来的,也快小半年了吧,个人感觉还是不会放弃继续 follow 上层的新技术,因为底层搞来搞去说实话也就那些,更核心的东西 Google 也不会让你瞎搞,瞎搞了每年打新的 aosp 会很蛋疼,反而是上层应用开发这块相当热闹,Google 带头在疯狂填 Jetpack 的空白,还有 Compose 框架,卷得飞起~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1365 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:55 · PVG 01:55 · LAX 09:55 · JFK 12:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.