大家平时在做项目时,会经常应用library作为第三方依赖,那么如果公司中有多个app,其中有部分业务功能逻辑是相似并且可以复用的时候,我们货怎么办呢?简单粗暴的办法就是直接复制过来,但是这样做岂不是复用率不高,以后这部分代码要修改岂不是每个app都要修改。
那么,把这部分代码作为library在项目中引用不就解决复用率的问题。
下面就一块来学习一下如何将公共模块打包成library:
1.提取公共模块部分,修改主要配置
新建一个项目,将公共模块代码放在这个新项目中,然后修改app下的build.gradle里面的参数,详细如下图所示:
将build.gradle里面的 apply plugin: 'com.android.application' 改成 apply plugin: 'com.android.library',并且将applicationId删掉或者注释掉,这个千万不要漏掉。
2.修改app文件夹里面的iml文件名称
进入到app文件夹下,修改app.iml为你的library库名,即是外层文件名,我这里改成了 baselibrary:
3.删除不要的文件夹,并对文件夹重新命名
- 先将除app文件夹以外的文件都删掉,只保留app这个文件夹
2. 再将app文件夹里面所有的文件都复制到于app同级的文件夹里面
3.删掉app这个文件夹,同时修改外层文件夹的名称(最好改成与iml文件同样的名称,我这里改成 baselibrary):
以上我们的library就生成好了,那么我们接下来就是引用了
1.首先我们将刚刚生成的library引用到我们的新项目中,点击File——New——Import Model,选择baselibrary文件夹:
2.引用baselibrary作为app的model依赖,操作点击AS的File——Project Structure,会弹出如下弹窗:
点击ok按钮这是就可以在app下的build.gradel里面看到baselibrary作为库依赖在app里面了,接下来我们就可以正常的使用依赖里的功能代码。
特别注意点:
1.最好baselibrary里面的AndroidManifest里不要引用Application等,具体的如下图:
这里为什么要删除,是因为这里设置里MyApplication和LAUNCHER的话会和主项目app里面的<manifest>冲突,如果真的需要在这里设置MyApplication和LAUNCHER的话,那就需要在app的<manifest>添加忽略,具体怎么添加大家可以根据具体的报错查找,或者评论告诉我。
2.baselinrary里面的SdkVersion、依赖的recycleView等要和app里面的一致
3.baselibrary里面尽量不要用Butter knife,要用的话也要用8.4版本及其以上的,并且将R改成R2
网友评论