{"id":21331064,"url":"https://github.com/bobomee/aivoiceapp","last_synced_at":"2025-06-23T01:37:27.511Z","repository":{"id":160854574,"uuid":"464178961","full_name":"BoBoMEe/AiVoiceApp","owner":"BoBoMEe","description":null,"archived":false,"fork":false,"pushed_at":"2022-02-27T15:44:22.000Z","size":41761,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T00:41:55.327Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BoBoMEe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-27T15:43:25.000Z","updated_at":"2022-02-27T15:44:29.000Z","dependencies_parsed_at":"2023-09-11T13:45:41.358Z","dependency_job_id":null,"html_url":"https://github.com/BoBoMEe/AiVoiceApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/BoBoMEe/AiVoiceApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoBoMEe%2FAiVoiceApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoBoMEe%2FAiVoiceApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoBoMEe%2FAiVoiceApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoBoMEe%2FAiVoiceApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BoBoMEe","download_url":"https://codeload.github.com/BoBoMEe/AiVoiceApp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BoBoMEe%2FAiVoiceApp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261396505,"owners_count":23152449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T22:28:51.704Z","updated_at":"2025-06-23T01:37:22.492Z","avatar_url":"https://github.com/BoBoMEe.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 课程讲解文档\n\n## 一.课程的核心思想（技术）\n\nKotlin + 组件化 + Kotlin Gradle DSL\n\n## 2.Kotlin Gradle DSL\n\n传统Gradle - Groovy\n\nKotlin Gradle - Kotlin\n\n## 3.组件化App\n\n远古应用： App(一堆的代码)\n\n远古应用升级版： App + Base（抽取通用代码）\n\n远古应用Pro: App + Base + lib（lib_log,lib_network,lib_map）\n\nMVC\n\nMVP （MVC升级版本） m(data) v(ui) p(impl)-\u003e逻辑\n\n组件化 App + (N + Module（App）) - N Library\n\n如何动态构建组件化？\n\n## 4.构建组件化App\n\nModule\n\n|  assistant  | voice_setting    |  developer  |  joke   |  map  |  setting   |  weather  |\n|:--:|:--:|:--:|:--:|:--:|:--:|:--:|\n|   语音助手  | 语音设置   | 开发者选项   | 笑话    | 地图    | 设置   |天气    |\n\napp : 壳工程，根据不同的 productFlavors，build不同的apk\n- voice : 包含所有module\n- assistant ： 包含 语音助手 module ，在 voice 安装后，可远程调用 voice 服务（wakeUp，asr，tts）\n...\n  \nlib \n\n|  lib_base| lib_network|  binder_server|  binder_connect |  \n|:--:|:--:|:--:|:--:|\n|   基础工具  |  网络请求 | binder远程服务  |  binder连接服务  |\n\n## 5.服务保活\n\n- 1.像素保活，也就是通过服务中启动一个窗口像素1px，来达到保活的手段[欺诈系统]\n- 2.系统自带，系统做了一些友好的保活 - FLAG\n    - START_STICKY:当系统内存不足的时候，杀掉了服务，那么在系统内存不再紧张的时候，启动服务\n    - START_NOT_STICKY:当系统内存不足的时候，杀掉了服务，直到下一次startService才启动\n    - START_REDELIVER_INTENT:重新传递Intent值\n    - START_STICKY_COMPATIBILITY:START_STICKY兼容版本，但是它也不能保证系统kill掉服务一定能重启\n- 3.JobSheduler\n    - 工作任务，标记着这个服务一直在工作，也是作为一种进程死后复活的手段\n    - 缺点：耗电，高版本不兼容\n- 4.进程相互唤醒，双进程保活\n    - QQ - 微信\n- 5.前台服务\n    - 我在前台运行，我绑定通知栏，在服务中创建通知栏\n  \n## 6. gradle 插件\n\nbuildSrc + kotlin dsl + productFlavors\n\n## 7.binderPool \n\naidl + exported service + permission\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobomee%2Faivoiceapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbobomee%2Faivoiceapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbobomee%2Faivoiceapp/lists"}