Mac Brew

概述

Homebrew 更适合用来装“系统级、全局通用、基本只需要最新版”的基础工具;但它不是万能软件下载器,也不是所有开发环境的最佳安装方式。

最主要收益:可脚本化(Brewfile),换新 Mac 时更容易一键还原;同时减少手动处理依赖的成本。

适用场景(快速判断)

CLI 大多优先考虑 brew;GUI 主要看是否需要长期锁版本,以及偏好升级方式是 App Store/官方安装器/应用自带更新还是 Cask 管理。

  • 推荐用 brew:通用 CLI 工具、系统级小工具;以及“不需要长期锁版本、允许跟随升级”的常见 GUI 应用(Cask)
  • 谨慎用 brew:会强影响 PATH/动态库的工具链(Python/Node/Java)、数据库/缓存服务、对 ABI 敏感的依赖
  • 不建议用 brew:项目强依赖特定版本且需要长期锁定、团队需要严格可复现(优先用版本管理器、容器或项目自带安装方式)

Android Note

Android 四大组件

  • Activity
    • 生命周期
    • 启动模式(standard,singleTop,singleTask,singleInstance)
    • 任务栈
    • 启动方式:显式 Intent,隐式 Intent(Intent Filter,URL Scheme,跨应用场景用隐式),ARouter
    • PendingIntent
    • 数据传递
    • startActivityForResult 启动一个 Activity 并等待结果。注意:startActivityForResult() 在 Android 11 及以上版本已被弃用,推荐使用 ActivityResultContracts 替代
    • Fragment
      • 生命周期(onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume,onPause,onStop,onDestroyView,onDestroy,onDetach)
      • 通信
      • DialogFragment()
    • onConfigurationChanged
    • onSaveInstanceState

Android Localization

切换语言

获取 string.xml 里的字段时,可以用下面的 getAttachBaseContext 获取对应语言的 context
集成 tinker 热更适配要拿到对的上下文