IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> SDK打包成aar后无法引用三方或者本身SDK项目中存在的aar的问题解决 -> 正文阅读

[移动开发]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中引用的三方库,为什么呢?原因在于打包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,去这里下载就可以了

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

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

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

?

然后再path中添加

?安装成功的标志如下:

?然后开始安装nexus

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

根据系统选择对应的版本,然后安装解压完成后进入

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

?

?输入cmd

然后

输入这个,然后等。。

?

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

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

nexus管理界面了

?

登录nexus

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

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

然后创建一个发布的仓库

?

?

?

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

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

打开这个

?

  <?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
  <localRepository>F:\Maven\maven_repository</localRepository>
  <pluginGroups>
  </pluginGroups>
  <proxies>
  </proxies>
  <servers> 
    <server>
      <!--本机nexus仓库名称-->
      <id>MyMaven</id>
      <!--本机nexus仓库用户名-->
      <username>admin</username>
      <!--本机nexus仓库密码-->
      <password>54749bca-b847-4ec8-9bd4-4c5bacd1df16</password>
    </server>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>54749bca-b847-4ec8-9bd4-4c5bacd1df16</password>
    </server>
    
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>54749bca-b847-4ec8-9bd4-4c5bacd1df16</password>
    </server>
  </servers>
 
  <mirrors>
     <!-- 镜像 maven 库的路径 -->
    <mirror>
      <id>3rd</id>
      <url>http://localhost:8081/repository/MyMaven/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
 
    <mirror>
      <id>maven-default-http-blocker</id>
      <mirrorOf>external:http:*</mirrorOf>
      <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
      <url>http://0.0.0.0/</url>
      <blocked>true</blocked>
    </mirror>
  </mirrors>
 
  <profiles>
 
    <profile>
       <id>nexusProfile</id>
         <repositories>
           <repository>
             <id>3rd</id>
             <name>My maven Repository</name>
             <url>http://localhost:8081/repository/MyMaven/</url>
             <layout>default</layout>
             <releases>
               <enabled>true</enabled>
             </releases>
             <snapshots>
             <enabled>true</enabled>
           </snapshots>
         </repository>
       </repositories>
    </profile>
  </profiles>
 <!--激活 -->
  <activeProfiles>
     <activeProfile>nexusProfile</activeProfile>
   </activeProfiles>
 
</settings>

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

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

?

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

?

implementation 'GroupId:Aritifiact ID:version@aar',然后这样就可以了,这样做完后,在重新通过脚本的方式上传到远程maven库上,这样就不会有存在说aar中依赖了其他aar包丢失的问题了
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:28:44  更:2022-06-06 17:28:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 2:04:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码