Android基础之AS如何打.aar包,并应用

本文介绍如何在Android Studio中将源码及资源文件一起打包为aar包,并详细说明了使用步骤,包括配置项目、打包方法及在其他项目中引入使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 问题描述

Android studio导出的jar包即使不包含xml资源,在应用的时候会报资源找不到的错误。那么如何把源码和资源文件一起打包生成aar包?

2 解决思路

Android studio给我们提供一种更简便的方式——aar包,可以同时把class和res文件打包进去,现在的support v7 和gson-2.21就是aar打包方式。

3 打包方法

先把想要打包成sdk的项目做成Android libraries B不要建成Android project 然后我们建立一个新的Android project A 去调用写好的libraries B

运行后,studio就自动把我们的librarys B自动打包成aar包了,这就是我们想要的sdk了(路径,如图所示:libraries build outputs aar)

路径图

4 使用方法

4.1 把打好的aar包拷贝到需要引用的Android工程libs目录下

这里写图片描述

4.2 修改Android studio的gradle设置

4.2.1 在project的build.gradle文件中添加

repositories {
    flatDir {
        dirs 'libs' 
    }
}

4.2.2 再在module的build.gradle文件中dependencies标签中添加下面的依赖。 compile(name:‘你的aar名字’, ext:‘aar’)

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //compile(name:'aar名字', ext:'aar')
    compile (name:'library',ext:'aar')
}

4.2.3 截图如图所示

这里写图片描述

5 结果

打开你的项目地址“uildintermediates exploded-aar“你会发现下面多了一个文件夹”library“打开后能看见里边包含了一个”classes.jar“文件与一些资源文件和”R.txt“文件。截图如图所示:

这里写图片描述

6 最后

直接运行项目即可,是不是很6666666!

### 解决方案 在构建 AAR 文件时,Android Gradle Plugin 不支持直接依赖本地 `.aar` 文件。这是因为如果直接含本地 `.aar` 文件,则生成的目标 AAR 将会损坏,因为这些本地 `.aar` 文件中的类和资源不会被正确打到目标 AAR 中[^1]。 为了规避此问题成功构建 AAR,可以采用以下方法: #### 方法一:将本地 `.aar` 转换为 Maven 仓库形式 可以通过创建一个本地 Maven 仓库将 `.aar` 文件发布到该仓库中来解决问题。这样可以在项目的 `build.gradle` 文件中像远程依赖一样声明本地依赖。 以下是具体实现步骤的代码示例: ```gradle // 在根目录下的 build.gradle 添加 maven-publish 插件 plugins { id 'maven-publish' } // 定义要发布的 .aar 文件路径 task sourceJar(type: Jar) { archiveClassifier.set('sources') from android.sourceSets.main.java.srcDirs } afterEvaluate { publishing { publications { release(MavenPublication) { groupId = 'com.example' // 替换为你自己的 group ID artifactId = 'local-aar-library' // 替换为你想要的 artifact 名称 version = '1.0.0' // 版本号 artifact("$projectDir/libs/uniapp-v8-release.aar") // 指定 .aar 文件位置 artifact(sourceJar) } } repositories { maven { url "$rootDir/local-maven-repo" } } } } ``` 运行命令以发布 `.aar` 到本地 Maven 仓库: ```bash ./gradlew publish ``` 之后,在需要使用的模块中添加如下依赖配置: ```gradle repositories { maven { url "${rootDir}/local-maven-repo" } // 使用刚才定义的本地仓库地址 } dependencies { implementation 'com.example:local-aar-library:1.0.0' // 对应上面设置的坐标 } ``` --- #### 方法二:解压 `.aar` 将其作为模块导入 另一种解决方案是手动解压 `.aar` 文件,将其转换为独立的 Android Library Module 进行管理。`.aar` 文件本质上是一个 ZIP 压缩,其中含了编译后的 Java 类、资源文件和其他元数据。 执行以下操作完成转换过程: 1. **解压缩 `.aar` 文件** 可以使用任何标准工具(如 WinRAR 或 unzip 工具)打开 `.aar` 文件。 2. **新建 Android Library Module** 创建一个新的 Android 库模块,将解压出来的内容复制进去。确保保留原始结构,特别是 `classes.jar` 和 `res` 目录等内容。 3. **修改 module 的 build.gradle 配置** 如果原 `.aar` 文件中有额外的依赖项,请记得在新模块的 `build.gradle` 文件中补充它们。 最终效果类似于正常引入了一个子模块的形式。 --- #### 方法三:动态加载 `.aar` 文件 对于某些特殊场景下不希望重新组织项目的情况,也可以考虑通过反射或其他方式动态加载 `.aar` 所对应的 ClassLoader 来间接调用其功能。不过这种方法复杂度较高且维护成本较大,通常仅适用于特定需求的应用程序开发阶段测试用途而非正式环境部署推荐做法。 --- ### 总结 以上三种方法都可以有效解决 Android Gradle Plugin 构建过程中遇到的关于无法直接引用本地 `.aar` 文件的问题。建议优先尝试第一种或第二种方法,因其更符合现代软件工程实践原则且易于长期维护。 ```python print("Solution implemented successfully.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值