项目重构记录
总结一下在新公司一个月来学到的东西吧。公司的项目采用Native+RN进行开发,前两周简单的了解了一下项目结构,写了一些自动打包的脚本。后两周大致学习了一下RN,然后就是调整项目结构,做重构。
一些简单的记录,
需要注意的地方
- 主工程module下的插件是 apply plugin: ‘com.android.application’ 
library中的插件是
apply plugin: ‘com.android.library’
- 在library module中,生成的R文件中的变量没有被final修饰,所以在 - switch case中需要改一下写法,比如改成- if else。
- ButterKnife中注解@bind中要求参数是final类型,所以在library中这个注解也不好用,作者给出了解决方案。 
- library module中不能有applicationId。 
改动记录
涉及到源代码的部分没有公开。
- 将原项目中所有library依赖移动到BaseApp文件夹下,统一由一个git子模块引用。,所以需要在工程根目录下的setting.gradle中修改include路径include ‘:base’ 
改为
include ‘:BaseApp:base’
library中依赖的其他library也需要做修改(路径前添加:BaseApp ),如RiskControlSdk中dependencies中
2releaseCompile project(path: 'BaseComponents', configuration: 'release')
debugCompile project(path: ':BaseComponents', configuration: 'debug')
改为
2releaseCompile project(path: ':BaseApp:BaseComponents', configuration: 'release')
debugCompile project(path: ':BaseApp:BaseComponents', configuration: 'debug')
- 原app module(现base)中用到 - butterknife,在@bind注解要求参数是final类型,但是在library项目中,生成的R文件中的id不是final。- butterknife作者给出类解决办法:升级- butterknife到8.8.1,在library中的- build.gradle添加- apply plugin: 'com.jakewharton.butterknife'插件,用于生成- R2文件,将原来的- R.id.xxx改为- R2.id.xxx。同理,在- switch case中用R.id的地方也要做相应修改。参考 https://github.com/JakeWharton/butterknife
- 将gradle依赖、某些appkey在根目录下的 - config.gradle中配置
 在项目根目录下新建- config.gradle文件,用来存放公共配置,如
| 1 |  | 
使用时注意事项:
- 现在library中的所有appkey(三方)相关的,都由工程根目录下的配置文件config.gradle提供,然后添加到该module的BuildConfig.java文件中,代码中从BuildConfig.java文件中引用
在config.gradle文件中添加一个三方key值 
| 1 |  | 
在module中的build.grale引用
| 1 |  | 
加入到该module的BuildConfig.java文件
| 1 |  | 
代码中引用
| 1 |  | 
这里需要注意的是,import该文件的时候,是从该module的manifest.xml中的跟标签的package属性所指向的包名导入的,如
| 1 |  | 
则BuildConfig.java文件的导入路径为 import com.huangyuanlove.test;
2. 所有使用gradle依赖的三方全部放在根目录的config.gradle文件夹下,其他module引用时可参考下面的配置。如
需要添加一个新的依赖,在根目录下的 config.gradle文件中
| 1 |  | 
在其他module中引用
| 1 |  |