Android开发入门:AAR文件的生成与使用详解
Android开发入门:AAR文件的生成与使用详解
前言
现在App开发模块化技术已是常态,有很多的功能模块都被抽出来供给开发者使用。为了开发者使用,这些模块都会被打包,就和java中的库一样。在java中,一个模块可以被打包为Jar包,而在Android中,不仅仅有java文件,还有一些其他的资源文件,所以就出现了AAR文件(一种打包格式),本文通过一个demo来介绍如何打包一个Library文件,生成AAR。
一、AAR是什么?
AAR是一种压缩格式(打包的Library),相当于Android里面的Jar包,不过里面可以包含Android相关的一些资源,比如说:layout, drawable等res资源。
二、使用步骤
包括生成和使用两大部分,话不多说,让我们开始吧。
1.生成AAR
首先创建一个Android Project,然后在里面新建一个Library,这里我们就使用它默认的名字。
然后就会生成这样的一个Library,我们的目标是在这个Library中实现一些功能,然后打包成AAR文件,可以提供给其他工程调用。
在这个Library中,我们创建一个名为DoSomething的类,然后里面有一个printSomething的方法,这里使用Kotlin语言。
package com.example.mylibrary
class DoSomething {
public fun printSomething(){
println("你好,你想要输出一些东西!")
}
}
接下来开始打包。在当前Library目录下的build.gradle文件中,添加如下代码。也可以创建一个独立的*.gradle文件,然后在build.gradle中调用(apply {‘*.gradle’})。
apply plugin: 'maven-publish'
afterEvaluate {
publishing {
publications {
debug(MavenPublication) {
// Applies the component for the debug build variant.
from components.debug
groupId = 'com.gloomy'
artifactId = 'myLibrary'
version = '1.0.0'
}
}
publishing {
repositories {
maven {
// change to point to your repo, e.g. http://my.org/repo
url = "file:///Users\\******\\Desktop\\AndroidStudy\\AAR"
}
}
}
}
}
在以上代码中,使用了maven-publish插件。之前很多教程使用maven插件,但新版本的Android Studio已经不再支持。maven-publish的更多使用,可以参考官方文档(https://developer.android.com/studio/build/maven-publish-plugin?hl=zh-cn#kts)。其中debug表示是一个发布渠道,你可以取任何名字,而在这个闭包中的groupId,artifactId,version分别表示公司的域名,项目名称以及项目版本号。分别对应生成的aar名称中的这些。
然后再往下,repositories闭包里面写的是我们想要输出AAR文件的位置,这里我们先生成到本地。同步Gradle配置,点开右侧的Gradle文件夹,双击publish就开始生成AAR文件。
如果没有Tasks文件,需要到Preference中设置Gradle,去掉相关勾选。
最后在指定的路径里可以看到已经打包好的AAR文件。如果需要打包到远程代码仓库,可以将本地的AAR文件使用git push到远程仓库,或者直接设置远程仓库位置。
2.AAR使用
接下来介绍如何在其他工程中使用AAR文件。这里介绍一种灵活性较高的方式。首先在根目录下的build.gradle中添加如下代码,其中url是存放AAR文件的位置,可以是本地或远程代码仓库。
buildscript {
repositories {
google()
mavenCentral()
maven {url "file:///Users\\*****\\Desktop\\AndroidStudy\\AAR"}
}
}
allprojects {
repositories {
google()
mavenCentral()
maven {url "file://Users\\*****\\Desktop\\AndroidStudy\\AAR"}
}
}
如果Synchronize失败,需要检查settings.gradle文件,确保两边的代码仓库设置一致,同时将repositoriesMode设置为RepositoriesMode.PREFER_SETTINGS(新版本Android Studio可能需要这样做)。
然后在app模块的build.gradle中声明依赖,依赖名称由groupId、artifactId和version组成。如果在库中进行了修改,只需更新版本号即可。
implementation 'com.gloomy:myLibrary:1.0.0'
声明好依赖后,在MainActivity中测试:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val d = DoSomething()
d.printSomething()
}
}
最后在Logcat中可以看到函数调用成功。