Android如何生成本地或者远程aar

简介: 把一定的功能逻辑抽取成一个aar,提供至需要的人,在Android的开发中,这种方式司空见惯,只闻使用方式,不知内部实现,加深了源码的保护措施,又使得功能可以正常开发,相对于一些公司有着外包人员的协同开发,一些主要的功能,不想泄露,那么就可以采取这种方式。

在一些特殊的场合,比如源码的保密,sdk的提供和使用,都会把一定的功能逻辑抽取成一个aar,提供至需要的人,在Android的开发中,这种方式司空见惯,只闻使用方式,不知内部实现,加深了源码的保护措施,又使得功能可以正常开发,相对于一些公司有着外包人员的协同开发,一些主要的功能,不想泄露,那么就可以采取这种方式。


aar的方式,每次更新后,只需要动态的改变版本号,就可以实现新增的功能和逻辑,和主线的功能保持分离而又牵扯联系,这种方式的使用,集成简单,在乎的是结果,而非实现的过程,最重要的是对于源码的一个保护机制;Android中的aar主要是针对于Android Library而言的,可以简单的理解为是对Android Library的打包,这个包的格式既为.aar,是一个二进制归档文件,包含所有资源,class以及res资源文件。


本地aar生成以及使用

第一步

创建一个Library(因为aar的生成是以Library的形式打包),并创建.gralde文件,存储路径自己定义,文件名字也自己定义,如下图:

image.png

第二步

在已创建的.gradle文件里书写对应生成aar的代码,需要注意,每次更新代码,版本号需要对应的升级,打出aar的路径也需要自己来定义,这里我生成到了E盘下:

applyplugin:'maven'ext {
PUBLISH_GROUP_ID='com.abner'//组idPUBLISH_ARTIFACT_ID='maven'//具体的项目idPUBLISH_VERSION='1.0.1'//版本号}
//maven-路径uploadArchives {
repositories.mavenDeployer {
repository(url:"file:///E:\\github\\mavenaddress")
pom.project {
groupIdproject.PUBLISH_GROUP_IDartifactIdproject.PUBLISH_ARTIFACT_IDversionproject.PUBLISH_VERSION        }
    }
}
//以下代码会生成 jar 包源文件,如果是不开源码,请不要输入这段//aar包内包含注释taskandroidSourcesJar(type:Jar) {
classifier='sources'fromandroid.sourceSets.main.java.sourceFiles}
artifacts {
archivesandroidSourcesJar}

第三步

Library里的build.gradle,进行引入:

image.png

以上三步完成之后,点击Android studio右侧的Gradle,找到对应的Library下的Tasks下的upload,双击uploadArchives 就会在第二步中自己定义的路径下打出自己的aar。

image.png

生成的aar文件:

image.png

复制生成的aar,就可以发送给别人进行依赖使用了,这样别人就可以调用你Library下所提供的业务逻辑了,具体使用,复制aar到libs下,然后需要使用的module下加上如下图的引入即可:

image.png

以上的本地aar就生成了,需要注意的是,对于Android studio的版本的升级,可能遇到右侧的uploadArchives没有显示的问题,大家可以按照以下方式,解决一下:

image.png

比如我们本地生成了aar,不想每次更改代码后,就要替换aar,我们就可以采取以下的方式,进行本地引入,以后,只需要改版本号即可:

第一步,在根目录的build.gradle文件下进行依赖我们本地的路径,也就是上边我们生成aar文件的地方。

image.png

第二步,在需要的module里进行引入,这样以后aar有更改,我们只需更改版本号即可:

image.png

远程aar生成以及使用

以上,我们只能自己本地使用,或者把aar复制给别人使用,一旦更改频率很高,每次的更换是很麻烦了,能不能让他人使用的时候,如果更改了,也只需更改版本号就可以了呢,答案必须可以,大家可以选择任何一个代码托管平台进行实现,这里我用gitee也就是码云来作为例子演示,说到这里,为了保证源码的绝对安全,其实一般在公司都有自己的私服,上传至私服即可。

通过本地的方式,我们已经在本地生成了对应的aar文件,改为远程,无非就是把对应的aar文件上传至对应的仓库地址即可。


1、无仓库地址:


需要在giee上创建自己的仓库,得到仓库地址:

image.png

进入本地的maven目录也就是aar目录,依次执行下边git命令,需要注意,关联自己的远程地址


git init
git add .
git commit -m "first commit"
git remote add origin https://gitee.com/AbnerAndroid/android-maven.git
git push -u origin master

相关命令注释:

git init                            //初始化仓库
git add .                         //添加到本地暂存区   或用  git add   (文件name)
git commit -m “first commit”                      //提交到本地仓库
git remote add origin    远程仓库地址       //添加远程仓库 
git pull origin master                                 //把远程仓库master分支拉取到本地仓库master分支
git push -u origin master                           //把本地仓库的master分支推送到远程仓库master分支

2、已有仓库地址,需要注意,关联自己的远程地址


git remote add origin https://gitee.com/AbnerAndroid/android-maven.git
git push -u origin master

把本地生成的aar推到远程之后,如下图:

image.png

点开之后

image.png

具体调用就和本地的其他项目调用类似了,如下图

第一步,在根目录的build.gradle文件下进行依赖我们上传的仓库路径,以raw/master结尾

image.png

第二步,在需要的module里进行引入,这样以后aar有更改,我们只需更改版本号即可:

image.png

以上就是简单的本地和远程aar的生成和使用,前边说过,公司一般内部有自己的私服,正常都是上传到自己的私服中,当然如果是自己开源,或者公司没有要求,那么我们上传到哪都是可行的。

相关文章
|
7月前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
972 0
|
Java Android开发
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
Android如何通过Gradle发布Android依赖库(aar)到 jitpack 公共仓库
630 0
|
6月前
|
Android开发
android studio找不到aar问题解决
android studio找不到aar问题解决
258 0
|
7月前
|
Java Android开发
Android module 打包成aar或jar
Android module 打包成aar或jar
287 0
|
Java 开发工具 Android开发
Android修改aar包中的类文件并重新打包
Android修改aar包中的类文件并重新打包
1252 0
|
Java Android开发
【Android】jar包和AAR包
以前在使用 Eclipse 开发 Android 时,如果想代码打包,只有 jar 包一个方法,但是 jar包 只能把 Java 文件代码打包进去,如果要使用一个有布局和资源的库的话,除了将 jar 放入 libs 外,还要引入相关的资源和配置文件,很麻烦。
281 0
|
JSON Java Android开发
Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)
Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏)
3199 0
|
XML Java Maven
Android Bintray、JCenter 替代方案MavenCentral(发布jar,aar到Maven中央仓库)
Android Bintray、JCenter 替代方案MavenCentral(发布jar,aar到Maven中央仓库)
1173 0
|
算法 安全 Java
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)
230 0
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)