这几天在研究android下怎么把自己的项目当作一个library给到另一个app做嵌入使用,把这些记录下来,方便以后参考
准备工作
1.需要了解一些gradle 命令打包的知识
2.了解publish推送maven的知识
简化代码到三方app
我们把自己的项目简称A,三方项目简称B
1.我们需要先把自己项目A,进行简化,因为项目B不一定需要我们所有的功能,我们只用保留项目B使用的功能即可。
2.在项目B中新建moudle,并且命名library的名称
3.在新建成功后,复制项目A的libs,src二个文件过到项目B的library下
4.修改library下的build.gradle文件的依赖和报错
5.在项目B的build下面找到assemble执行,会在build的outputs生成aar包。
6.可以在项目B的app下面添加Implementation project(‘library名称’) 验证
上传maven
1.在上面打好aar包后,在build的outputs下面找到aar,拷贝到libs下面
2.在library的build.gradle下面放入push代码,代码里变量的定义在gradle.properties下面。
publishing {
publications {
def fileName = "libs/库名.aar";//注意修改
def taskId = "pushtomaven";
println "${fileName}"
publishing.publications.create(taskId, MavenPublication) {
artifact "${fileName}"
groupId GROUP_ID
artifactId "maven名称"
version "1.0.14"
}
}
repositories {
maven {
url MAVEN_AAR_RELEASE_URL
credentials {
username NEXUS_USERNAME
password NEXUS_PASSWORD
}
}
}
}
3.点击library下的publishing的publish开始上传,成功即可。这个上传只能添加,不能删除。
自动打包
这个是简化代码成功后,从打包到上传的linux命令操作,方便我们自动化操作,减轻错误代码
rm -rf ../项目名/库名/build/outputs/aar/*
cd ../项目名
gradle -continue 库名:build
//这个步可以不要,我是修改了包名
mv ../项目名/库名/build/outputs/aar/包名.aar ../项目名/库名/build/outputs/aar/包名.aar
rm -rf ../项目名/库名/libs/包名.aar
cp ../项目名/库名/build/outputs/aar/包名.aar ../项目名/库名/libs/
gradle -continue 库名:publish
上面已经完成了library到三方app的流程
但是如果,三方代码很多,我们想简化对三方app的依赖。
1、我们需要新建一个新项目,新建一个library到新的项目里
2、引入对三方app的依赖,只保留三方app中被用到的代码
注意:这里会有问题,因为简化了代码,所以打出来的R文件会比上面出来的小,少了很多没有用的资源,还要验证是不是有影响。