# JIMU **Repository Path**: ouyangpengdev/JIMU ## Basic Information - **Project Name**: JIMU - **Description**: 一种简单有效的android组件化方案,支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-23 - **Last Updated**: 2021-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 本分支只是为了解决windows机器使用JIMU框架上遇到的无法删除问题;组件化原理请参考原著:地址: https://github.com/mqzhangw/JIMU 1.windows出现Could not delete path ... app\build\intermediates\transforms\desugar\debug\0.jar错误,根据原因分析得出是Javassist修改类方法时导致Java程序无法释放问题导致的; 2.集合AutoRegister方案,使用效率更高的ASM框架来进行字节码分析和修改,非常感谢作者,原著地址:https://github.com/luckybilly/AutoRegister; 3.具体实现步骤: 1.替换原有项目中com.github.jimu:build-gradle:1.*.*为com.icitic.whdelop:build-gradle:1.0.2,已上传到jcenter仓库; 2.在app主module中新建类AppCompCore.class,主要用于AMS修改时找到需要插入注册组件的代码;代码内容如下: ``` package com.luojilab.componentdemo.application; import android.util.Log; import com.luojilab.component.componentlib.applicationlike.IApplicationLike; public class AppCompCore { public static void rigisterComp(IApplicationLike iApplicationLike){ Log.d("asm---",""+iApplicationLike.getClass().getSimpleName()); iApplicationLike.onCreate(); } public static void initComp(){ } } ``` 然后在主module中的build.gradle中添加自动注册的代码; ``` autoregister { registerInfo = [ [ 'scanInterface' : 'com.luojilab.component.componentlib.applicationlike.IApplicationLike' , 'codeInsertToClassName' : 'com.luojilab.componentdemo.application.AppCompCore' , 'codeInsertToMethodName' : 'initComp' , 'registerMethodName' : 'rigisterComp' ] ] } ``` 3.然后删除所有module中的combuild字段; ``` //combuild { // applicationName = 'com.luojilab.componentdemo.application.AppApplication' // isRegisterCompoAuto = true //} ``` 4.然后编译,在编译过程中会扫描出所有集成IApplicationLike的类,然后在AppCompCore类中initComp方法中动态插入该类的实例并实现rigisterComp方法,所以在编译期就自动执行了组件中的onCreate()方法; 5.以上操作只是修改了每一个组件自动注入执行onCreate方法的方式,并不修改其他地方;所以不需要有其他的改动;只是为windows机器无法删除的bug的一种解决方案;