# AppInit:Android 应用初始化框架
[![Download](https://api.bintray.com/packages/bingoogolapple/maven/bga-appinit-plugin/images/download.svg)](https://bintray.com/bingoogolapple/maven/bga-appinit-plugin/_latestVersion)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/bingoogolapple/AppInit/pulls)
AppInit 是一款 Android 应用初始化框架,基于组件化的设计思路,功能灵活,使用简单。
AppInit 用于解决美团收银 B 端 App 在业务演进过程中的实际问题,取得了不错的效果,因此我们决定将其开源,希望更多技术同行一起开发,应用到更广泛的场景里去。
## 背景
随着业务的快速发展,新项目新业务不断出现,以及项目组件化的实施,项目里需要初始化的业务模块和 SDK 也逐渐增多,而且有些业务模块间可能有着错综复杂的依赖关系,在项目开发和测试人员不足、新加入开发同学不熟悉项目的情况下,难免会出现少测漏测的情况,如何使各模块初始化代码解耦、按正确的顺序初始化是我们需要思考的问题。
## 功能简介
* 可以在指定进程的指定线程,按指定顺序分发 Application 生命周期方法给初始化类(继承自 SimpleAppInit 并添加 AppInit 注解,低耦合)
* 可以配置各模块间的初始化顺序,模块内部自己管理各初始化类的顺序,也可配置在其他模块的某个初始化类之前初始化(编译期间排序,运行期高性能)
* 可以在应用启动时拉取配置信息动态修改初始化顺序,及时修复线上包初始化顺序错乱问题(高稳定)
* 可以统计各模块和具体初始化类的初始化时间,便于优化冷启动时间
## TODO
* 非主 dex 懒加载
* 初始化线程池优化
## 业界初始化方案对比
![业界初始化方案对比](docs/imgs/comparison.png)
## 设计与使用文档
* [使用文档](docs/user-manual.md)
* [设计文档](docs/principle.md)
## 更新日志
[更新日志](CHANGELOG.md)
## 免责声明
AppInit 于 2019 年 1 月 21 日以公司名义在 Meituan-Dianping 账号下开源 ,并于 2020 年 1 月 13 日停止从 Meituan-Dianping 账号开源。
由于之前开源的 1 年时间内已经有开发者将 AppInit 应用到了实际项目中,后续业务项目升级 Gradle 版本后可能也需要 AppInit 升级进行兼容,且在之前开源的 1 年时间内已经大量 Fork,因此再次 Fork 一份到个人账号下进行维护。代码包名不变,为了便于后续上传 JitPack,Gradle 依赖由「com.sankuai.erp.component:appinit-plugin」变为「com.github.bingoogolapple.AppInit:buildSrc」
![停止从 Meituan-Dianping 账号开源后的已 Fork 列表](docs/imgs/disclaimer.png)
没有合适的资源?快使用搜索试试~ 我知道了~
AppInit 是一款 Android 应用初始化框架,基于组件化的设计思路,功能灵活,使用简单。.zip
共133个文件
java:47个
png:23个
xml:15个
0 下载量 28 浏览量
2024-08-21
12:18:09
上传
评论
收藏 7.71MB ZIP 举报
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:项目具体内容可查看/点击本页面下方的*资源详情*,包含完整源码+工程文件+说明(若有)等。【若无VIP,此资源可私信获取】 【本人专注IT领域】:有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为您提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发出更多功能 #注 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担 2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答
资源推荐
资源详情
资源评论
收起资源包目录
AppInit 是一款 Android 应用初始化框架,基于组件化的设计思路,功能灵活,使用简单。.zip (133个子文件)
gradlew.bat 2KB
.gitignore 603B
build.gradle 4KB
build.gradle 2KB
test_config.gradle 1KB
build.gradle 889B
build.gradle 706B
build.gradle 465B
settings.gradle 292B
build.gradle 188B
build.gradle 177B
build.gradle 142B
build.gradle 0B
gradlew 5KB
BaseTransform.groovy 14KB
ChildInitTableSortUtils.groovy 9KB
ApplicationAsmKnife.groovy 6KB
AppInitManagerAsmKnife.groovy 6KB
AppInitAsmTransform.groovy 5KB
BaseAptPlugin.groovy 5KB
AppInitExtension.groovy 4KB
BaseAsmTransform.groovy 2KB
AppInitPlugin.groovy 1KB
Logger.groovy 807B
gradle-wrapper.jar 54KB
BaseGenerateChildTableProcessor.java 7KB
AppInitCommonUtils.java 6KB
AppInitManager.java 5KB
AppInitDispatcher.java 5KB
App.java 4KB
AppInitItem.java 3KB
GenerateAppInitChildTableProcessor.java 3KB
AppInitApiUtils.java 3KB
ChildInitTable.java 2KB
SimpleAppInit.java 2KB
ModuleConsts.java 2KB
Logger.java 1KB
MainActivity.java 1KB
IAppInit.java 1KB
Module2Activity.java 1KB
AppInitCallback.java 1KB
Module3Activity.java 985B
Module1Activity.java 985B
Module2Fragment.java 946B
Module1Fragment.java 946B
SimpleAppInitCallback.java 864B
Module2Service.java 769B
Module3Service.java 769B
Module1Service.java 769B
AppInit.java 764B
AppInitLogger.java 762B
AppService.java 754B
Module2OneInit.java 712B
Module3OneInit.java 712B
RouterInit.java 708B
Module1TwoInit.java 529B
Module2FourInit.java 516B
Module3FiveInit.java 468B
FreeBaiduInit.java 452B
Module2ThreeInit.java 449B
Module2FiveInit.java 448B
Module3FourInit.java 448B
Module1FourInit.java 448B
Module1FiveInit.java 447B
XiaomiInit.java 446B
BaiduInit.java 444B
FreeInit.java 442B
VipInit.java 440B
TransformTest.java 414B
OrderConstraintRule.java 278B
ILogger.java 274B
Process.java 246B
Module3Fragment.kt 949B
Module1OneInit.kt 546B
Module3TwoInit.kt 544B
ShellOneInit.kt 485B
Module1ThreeInit.kt 481B
Module3ThreeInit.kt 480B
Module2TwoInit.kt 478B
user-manual.md 14KB
principle.md 13KB
README.md 3KB
ISSUE_TEMPLATE.md 1KB
CHANGELOG.md 1KB
app_init_manager_class.png 1.05MB
application_knife.png 968KB
run_log.png 938KB
app_init_manager_knife.png 648KB
comparison.png 519KB
application_class.png 463KB
init_coordinate_desc2.png 439KB
app_init_dispath.png 419KB
processor.png 418KB
child_init_table.png 383KB
module_coordinate_desc1.png 348KB
module_introduce.png 328KB
init_coordinate_desc1.png 224KB
module_coordinate_desc3.png 216KB
execution_flow.png 193KB
source.png 174KB
共 133 条
- 1
- 2
资源评论
热爱技术。
- 粉丝: 2501
- 资源: 7862
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功