本篇内容介绍了“Android开发之AAR文件如何生成与使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
aar一种压缩格式(打包的Library),相当于Android里面的Jar包,不过里面可以包含Android相关的一些资源,比如说:layout, drawable等res资源。
包括生成和使用两大部分,话不多说,让我们开始吧。
首先我们创建一个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的更多使用,可以去官网了解一下。其中debug表示是一个发布渠道,你可以取任何名字,而在这个闭包中的groupId,artifactId,version分别表示公司的域名,项目名称以及项目版本号。分别对应生成的aar名称中的这些。
然后再往下,repositories闭包里面写的是我们想要输出AAR文件的位置,这里我们先生成到本地。Synchronize以下,点开右侧的Gradle文件夹,双击publish就开始生成我们的AAR文件了。
如果没有Tasks文件,需要到Preference里面去,把Gradle设置一下,去掉这个勾勾就好了。
最后在我们指定的路径里可以看到我们已经打包好的AAR文件了,如果我们需要打包到远程代码仓库上,可以将本地的生成好的AAR使用git,push上去,或者在设置文件输出位置的时候,直接设置为远程代码仓库的位置。
接下来,介绍一下如何在其他工程中使用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文件如何生成与使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。