Android开发之AAR文件的生成与使用步骤

目录
  • 前言
  • 一、AAR是什么?
  • 二、使用步骤
    • 1.生成AAR
    • 2.AAR使用
  • 附:注意事项
  • 总结

前言

现在App开发组件化技术已是常态,有很多的功能模块都被抽出来成为一个个组件供给开发者使用。为了开发者使用,这些组件都会被打包,就和java中的库一样。在java中,一个模块可以被打包为Jar包,而在Android中,不仅仅有java文件,还有一些其他的资源文件,所以就出现了AAR文件(一种打包格式),本文通过一个demo来介绍如何打包一个Library文件,生成AAR。

一、AAR是什么?

aar一种压缩格式(打包的Library),相当于Android里面的Jar包,不过里面可以包含Android相关的一些资源,比如说:layout, drawable等res资源。

二、使用步骤

包括生成和使用两大部分,话不多说,让我们开始吧。

1.生成AAR

首先我们创建一个Android Project,然后在里面new一个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插件的,但是现在新版本的AS里已经使用不了了,大家要注意!maven-publish的更多使用,可以去官网了解一下(https://developer.android.com/studio/build/maven-publish-plugin?hl=zh-cn#kts)。其中debug表示是一个发布渠道,你可以取任何名字,而在这个闭包中的groupId,artifactId,version分别表示公司的域名,项目名称以及项目版本号。分别对应生成的aar名称中的这些。

然后再往下,repositories闭包里面写的是我们想要输出AAR文件的位置,这里我们先生成到本地。Synchronize以下,点开右侧的Gradle文件夹,双击publish就开始生成我们的AAR文件了。

如果没有Tasks文件,需要到Preference里面去,把Gradle设置一下,去掉这个勾勾就好了。

最后在我们指定的路径里可以看到我们已经打包好的AAR文件了,如果我们需要打包到远程代码仓库上,可以将本地的生成好的AAR使用git,push上去,或者在设置文件输出位置的时候,直接设置为远程代码仓库的位置。

2.AAR使用

接下来,介绍一下如何在其他工程中使用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(好像只有新版本的AS里面有这些问题,老版本没有)。

这时候就可以去我们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里面可以看到,我们的函数调用成功了!

附:注意事项

1.build–>Make Moudle app 不同as版本会生成app-debug.aar,用作调试使用看看log日志啥的。

2.Gradle界面-点击当前项目-点击tasks-点击build-双击assembleRelease生成一个app-release.aar提供开发者使用。

3. 主项目需要依赖AAR中所依赖的远程库,否则会出现ClassNotFound异常

这里也许某个依赖库你们的版本会发生冲突,这就需要你们协调了

4.资源命名最好统统加上你的项目名字前缀,比如图片资源、string、color、dimens、layout等等,反正res目录下所有文件最好都使用统一的加前缀命名,防止跟宿主app下的资源重复,因为aar引用跟源码引用起到的效果一样一样的,所有很容易出现资源重复引用的问题,所以加上前缀非常有必要。

5.如果该aar包里面有微信支付,分享等第三方库,你要在主工程中使用,要记得在gradle里面替换applicationId,或者用你主工程的包名和key去获取第三方操作的key和id

以分享为例,如果你清单文件中的分享KEY与主项目中的build gradle文件中的分享KEY不同的话,就会包清单文件异常的。

6.butterknife需要统一用8.4.0以上的版本,不然报错 ;依我的建议,最好不用,否则有你好受的哈!

7. 如果在aar的MyAppliction里面使用了类的管理器,那么在打包成aar的时候需要将代码抽出来做个独立的类管理器,记住一点,打包成aar之后所有和application有关的东西都要检查替换,避免出现空指针异常。

8. AAR模块用butterknife需要把资源R改为R2(批量替换)

9. 布局文件不要重名,否则会报找不到Id的异常

总结

到此这篇关于Android开发之AAR文件的生成与使用步骤的文章就介绍到这了,更多相关AAR文件生成使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Android的.aar文件生成方法以及使用技巧

    无论是用Eclipse还是用Android Studio做android开发,都会接触到jar包,全称应该是:Java Archive,即java归档文件. 在用AS的过程中,你会发现有aar这么个东西,经查阅资料了解到,aar是android归档文件,我想全称应该是:Android Archive. 他们两个有什么区别呢? 个人理解: jar是java文件编译后的class文件压缩包. aar是android module中所有resource文件和编译后的java文件的总压缩包. 区别在于:

  • Android Studio中生成aar文件及本地方式使用aar文件的方法

    主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法,具体内容详情如下所示: 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件. 分别存储位置: *.jar:库/build/intermediates/bundles/debug(release)/classes.jar *.aar:库/build/outputs/aar/libraryname.aar 两者区别: *.jar:只包含了class文件与清单文件,不包含

  • Android开发之AAR文件的生成与使用步骤

    目录 前言 一.AAR是什么? 二.使用步骤 1.生成AAR 2.AAR使用 附:注意事项 总结 前言 现在App开发组件化技术已是常态,有很多的功能模块都被抽出来成为一个个组件供给开发者使用.为了开发者使用,这些组件都会被打包,就和java中的库一样.在java中,一个模块可以被打包为Jar包,而在Android中,不仅仅有java文件,还有一些其他的资源文件,所以就出现了AAR文件(一种打包格式),本文通过一个demo来介绍如何打包一个Library文件,生成AAR. 一.AAR是什么? a

  • android开发之Json文件的读写的示例代码

    Json格式是常见的读写形式.读写Json文件也是常用的操作. 这次来实践一下Json文件的读写. 首先在SD卡上的读写权限是一定要申请的.那么还是老办法,在 AndroidManifest.xml 文件中添加 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 这在android 6.0 以下的系统就足够了.6.0及以上的更新的系统,在代码中需要申请SD卡的读写权限. 先

  • Android开发之XML文件解析的使用

    前言  本文主要介绍在Android中怎样来解析XML文件.主要采用的是SAX机制,SAX全称为Simple API for XML,它既是一种接口,也是一个软件包.作为接口,SAX是事件驱动型XML解析的一个标准接口.XML文件解析一般有2种方法,DOM和SAX.其中DOM需要先将xml文档全部读入到电脑内存中,当文档内容太大时,该方法并不适用.SAX就比较好的解决了该问题,它是逐行解析的,可以随时中断.但是SAX的操作比较复杂.因此,这2种方法各有优缺点,看具体应用情况.在前面的文章Qt学习

  • 详解Android开发之MP4文件转GIF文件

    一 基本实现原理 在介绍具体实现过程之前,先简单说下基本原理和实现步骤,在解决相对比较复杂的问题,我习惯先理清主要原理步骤,不要一开始就被繁琐细节绊住,待具体实现时再逐个攻破.下面是主要步骤: 1.视频文件的读取:包括录制和本地文件读取 2.将需要转换的视频部分解析为 Bitmap 序列 3.将解析好的 Bitmap 序列编码生成 GIF 文件 二 视频文件的读取 视频文件的读取比较简单,没什么特别需要说的地方,这里简单贴出视频读取的核心部分代码,详细实现可以Google一下就行了. priva

  • Android开发之ContentProvider的使用详解

    前言         Content Provider为存储数据和获取数据提供了统一的接口,它可以完成在不同应用程序下的数据共享,而在上一篇文章Android开发之SQLite的使用方法讲到的SQLite只能在同一个程序中共享数据.另外android为一些常见的数据,比如说音频,视频,图片,通讯录等提供了Content Provider,这样我们就可以很方便的对这些类型的数据操作了.使用ContentProvider的好处是开发人员不需要考虑数据内部是怎么存储的,比如说如果我们想利用Conten

  • Android开发之App widget用法实例分析

    本文实例讲述了Android开发之App widget用法.分享给大家供大家参考,具体如下: 放在桌面上的控件叫做--App widget,例如可以在桌面上添加按钮.图片等等控件,例如桌面播放器的控制面板 AppWidgetProviderInfo对象,它为App Widget提供元数据,包括布局.更新频率等等数据,这个对象不是由我们自己生成的,而是由android自己定义配置完成,这个对象被定义在XML文件中 1.定义AppWidgetProviderInfo对象,在res/xml文件夹当中定

  • Android开发之ImageLoader本地缓存

    ImageLoader是一个图片缓存的开源库,提供了强大的图片缓存机制,很多开发者都在使用,今天给大家介绍Android开发之ImageLoader本地缓存,具体内容如下所示: 本地缓存在缓存文件时对文件名称的修改提供了两种方式,每一种方式对应了一个Java类 1) HashCodeFileNameGenerator ,该类负责获取文件名称的hashcode然后转换成字符串. 2) Md5FileNameGenerator ,该类把源文件的名称同过md5加密后保存. 两个类都继承了FileNam

  • Android 开发之dataBinding与ListView及事件

    2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBinding一些比较基础的使用,在这里就不在记录了,毕竟现在Google一下,出来很多的教程,而且,android developer官网中,也已经对其基本使用方法做了详细介绍,有英语基础的童鞋,还是去看比较官方的文章.如果英文基础不太好的,https://realm.io/cn/news/data-bi

  • Android开发之在xml中设置自定义属性的方法

    xml中设置自定义属性 分三步: 1. 在项目中的values文件中创建attrs文件 <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="QLoadingIndicatorView"> <attr name="indicatorId" format="integer"

  • Android开发之ImageSwitcher相册功能实例分析

    本文实例讲述了Android开发之ImageSwitcher相册功能.分享给大家供大家参考,具体如下: 简介: 1.ImageSwitcher是viewSwitcher的子类,所以ImageSwitcher继承了ViewSwitcher素有的特性 2.作为ViewSwitcher的子类,它比ViewSwitcher使用更加方便,主要体现在:①. 重写了setNext() ②. 重写了showPrevious()方法.所以其实用起来,要比ViewSwitcher更为方便. 3.中重要的是:Imag

随机推荐