SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决

因为公司最近说要把我上次研发的一款工具类的项目说做成SDK的方式,我当时就懵了?SDK我没弄过呀,然后拼拼凑凑的把项目整理成SDK了,然后到打包了,网上搜了七七八八的资料,后面发现原来SDK就是之前我自己有弄过的一个项目变aar的方式来的,Android 项目转打包成aar_沙滩捡贝壳的小孩的博客-CSDN博客_android 项目转aar,嗯,就这篇,然后照着之前的步骤打包个aar包出来,然后问题就来了,打包出来后的aar包,嗯,没问题,哎,但是运行的时候,崩了,哎,一看错误

AAPT: error: resource android:att

然后在仔细看,发现是布局中引入了第三方控件导致的,然后我就懵圈了,难到是第三方没打入到aar包中嘛?然后打开aar包看

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第1张图片

 就这个地方看,发现还真是,哎,然后我就去网上搜呀搜呀,就发现

,当你打包成功使用一个测试的项目进行测试的时候你会发现很有问题。主要问题就是涉及到第三方依赖的问题,你会发现,当你引用SDK接口运行的时候找不到aar中引用的三方库,为什么呢?原因在于打包aar只是单纯的引用library项目中的class和资源,对于需要的第三方依赖是没有引入到aar中的,一种简单的方法就是在你的项目gradle中重新引入依赖,这样是可以运行的,但这本身就是一个问题,所以不推荐使用这种简单粗暴的方法

那么怎么办呢?

网上推荐了2种解决方法,下面说下这2种方式的操作方式

1.fataar,这种方式实际就是通过embed的方式把依赖的第三方aar包一块合并打入到一个aar包中,这块的做法,额,网上都有,照着步骤来就行,不过建议去官网上看,官网上有针对这个gradle版本不同,然后选用fataar的版本也不一样

https://github.com/kezong/fat-aar-android,地址是这个,直接照着他们的步骤来就行

不过,这种方式适合于那种依赖不是特别深的那种,怎么说呢,就比如我这个项目,它本身有依赖我们公司研发的一个第三方工具库,然后这个工具库呢,我打开看发现,它又依赖了其他的工具库,然后其他的工具库里头又依赖了其他的工具库,哎,首先这么来说的话,开发这么做是没问题的,但是碰到这种SDK打包的话,那这种方法显然是不可取的,因为当你embe的时候,你会发现你只是embe了当前这个工具库,但是它底下依赖的工具库,哎,它没没给你合并进来额,然后就懵圈了

2.第二种方法就是maven库的方式

这种其实最简单了,做法就是说把项目中本身依赖的aar包上传到maven仓库就好了

然后再把整体项目上传上去就好了

下面附上maven库跟查看maven库的nexus使用方式:

1.下载maven库

Maven – Download Apache Maven,去这里下载就可以了

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第2张图片

 根据系统版本选择不同的包进行下载就好了

maven的安装其实就是解压后,配置一下系统的环境变量。

新建变量MAVEN_HOME =D:\Downloads\apache-maven-3.8.5-bin\apache-maven-3.8.5(以自己的安装路径为准)

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第3张图片

 

然后再path中添加

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第4张图片

 安装成功的标志如下:

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第5张图片

 然后开始安装nexus

Nexus Repository Manager - Software Component Management | Sonatype,去这个地址下载,

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第6张图片根据系统选择对应的版本,然后安装解压完成后进入

D:\Downloads\nexus-3.39.0-01-win64\nexus-3.39.0-01\bin,对应的解压安装路径下,然后

 SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第7张图片

 输入cmd

然后

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第8张图片

输入这个,然后等。。

 SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第9张图片

当出现这个的时候然后再手动回车下,嗯,然后再浏览器输入

http://localhost:8081/ ,然后就进入了正常的

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第10张图片nexus管理界面了

 

登录nexus

网上很多文章的默认用户名密码分别是admin和admin123,但是我这个不是。用户名是admin,而密码在我们的解压包中路径带work的包下

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第11张图片

 在这个目录下直接打开获取,然后登录

然后创建一个发布的仓库

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第12张图片

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第13张图片 SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第14张图片

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第15张图片 

 

 然后点底下按钮确定就创建好了

然后再配置下maven的配置,之前已经安装好了的,进入maven的安装路径:

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第16张图片

打开这个

 

  

  F:\Maven\maven_repository
  
  
  
  
   
    
      
      MyMaven
      
      admin
      
      54749bca-b847-4ec8-9bd4-4c5bacd1df16
    
    
        releases
        admin
        54749bca-b847-4ec8-9bd4-4c5bacd1df16
    
    
    
        snapshots
        admin
        54749bca-b847-4ec8-9bd4-4c5bacd1df16
    
  
 
  
     
    
      3rd
      http://localhost:8081/repository/MyMaven/
      *
    
 
    
      maven-default-http-blocker
      external:http:*
      Pseudo repository to mirror external repositories initially using HTTP.
      http://0.0.0.0/
      true
    
  
 
  
 
    
       nexusProfile
         
           
             3rd
             My maven Repository
             http://localhost:8081/repository/MyMaven/
             default
             
               true
             
             
             true
           
         
       
    
  
 
  
     nexusProfile
   
 

然后照着填,然后这样就算配置完了

然后找到对应的aar文件进行上传即可

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第17张图片

 SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第18张图片

 其他地方就照着正常maven上传填就行,然后这样就算上传完成了,然后使用的时候,老规矩

SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决_第19张图片

 

implementation 'GroupId:Aritifiact ID:version@aar',然后这样就可以了,这样做完后,在重新通过脚本的方式上传到远程maven库上,这样就不会有存在说aar中依赖了其他aar包丢失的问题了

你可能感兴趣的:(android进阶,android,android,studio,android-studio)