项目重构记录
总结一下在新公司一个月来学到的东西吧。公司的项目采用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中
1
2releaseCompile project(path: 'BaseComponents', configuration: 'release')
debugCompile project(path: ':BaseComponents', configuration: 'debug')
改为
1
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 | |