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