# android_kotlin_demo **Repository Path**: carbohydrate_42/android_kotlin_demo ## Basic Information - **Project Name**: android_kotlin_demo - **Description**: android 脚手架 : jetpack 全家桶 + 基于 jetpack compose 的单 activity 架构 - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 13 - **Forks**: 3 - **Created**: 2022-11-18 - **Last Updated**: 2024-07-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 本工程的目标 kotlin + jetpack compose 为主,自定义 view 为辅助 + android 的demo甚至是样板工程, 参考 https://developer.android.google.cn/guide?hl=zh-cn ## 一期目标 [x] compose 状态管理 1. list 类型数据, 自定义 class 类型, list 自定义 class 类型数据的状态管理 2. 集中式状态管理 viewModel [] material compose 组件的基本使用 1. 基本界面布局, 样式调整 2. 常见的数据输入组件 : 各种数据输入器 3. 数据展示组件 : 列表、表格(移动端或许不大适合放表格) 4. 基础菜单组件: tab、menu、navigation 5. 基本的信息提示组件: 气泡框 [x] okhttp 或 retrofit 之类的网络请求库, 1. 全局拦截, 2. 响应数据校验, 3. api 文件风格采用 interface 的形式 [x] sqlite 数据库,以及对应的 orm 库 room 的使用 [x] 简易键值对数据读写, sharedPreference, 类似前端的 local storage [] 文件存储系统 1. 文本文件的读取和写入 2. 二进制文件的读取和写入 [x] 系统通知 1. toast 2. notification [x] WebView 嵌入 1. h5界面打入package 2. h5界面远程访问 [] 熟悉 kotlin 基本的语法 1. 尝试寻找一种的较为符合当前场景的代码风格 2. 不建议纯粹为了学kotlin而学kotlin ## 二期目标 1. 工程目录结构设计, 可以参考 java 的后端的多模块的玩法, 前端工程也需要同时进行修改 (重要 !!!) 2. 集中式状态管理/IOC框架 框架 Flow 3. "路由"框架 navigation, 实现单activity应用 4. 手机硬件调用 1. Camera 2. Bluetooth 3. NFC 4. 机器信息获取 5. USB 通信 1. 参考 https://zhuanlan.zhihu.com/p/358212044 (usb 转 串口通信, 需要手机支持 otg) 6. GPS 5. material3 组件的完全使用,参考前端的玩法和风格,针对常见业务场景封装组件 6. 权限管理系统 7. 网络请求进阶玩法 1. websocket 2. MQTT 通信控制 8. android 平台的 jni 原生调用: ndk 9. android 国际化 10. 集成 echarts, kotlin 传入数据, js 负责进行处理 11. 集成 webRTC 实现简单的点对点视频通话, 语言通话, 建议现在浏览器上实现之后, 再转到 android 上试试 12. android 拍照 / 摄像 / 录音, 同时需要支持缓存文件选择 13. 文件上传, 缓存文件管理 (建议使用系统的文件资源管理器, 需要支持文件预览, 文件选择功能) ## one more thing 1. 关于 adb 调试 : adb 是一个命令行工具, 一般装在 platform-tools 里头, 一般在 sdk 的安装目录下 (android studio 的 sdk manager 里面可以看到), 一般是在 `~/Android/Sdk/platform-tools/adb`, 具体咋用可以参考官方文档 https://developer.android.google.cn/studio/command-line/adb?hl=zh-cn