aar

来源:互联网 发布:cla 知乎 编辑:程序博客网 时间:2024/06/09 20:46

1. 何为aar?

大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。

2.生成方法

要输出 aar 文件,必须将 Module 配置为 library,在 gradle 文件中如下:
Moduled中的build.gradle文件的第一行参数:

1. 输出aar,即想生成aar就在这里把Mudule配置为library

apply plugin: 'com.android.library'

2.生成apk

apply plugin: 'com.android.application'

比如对BuildType 为debug 的配置,输出为:[ModuleName]/build/outputs/aar/[ModuleName]-debug.aar。

注意:

如果是把普通的工程转化成依赖包的话,还需要删除:

applicationId "com.***"

3.单独编译一个aar
现在我的一个 project 下面有多个 Module ,一开始不知道如何单独编译某个 Module , 现在记录下
在 Terminal 标签下输入
./gradlew :your_module_name:task_name    如:./gradlew :app:assembleRelease

3. 添加依赖

在当前需要添加依赖的项目中找到build.gradle
repositories {
flatDir {
dirs 'libs' //this way we can find the .aar file in libs folder
}
}

告诉去libs下找aar
然后在依赖(dependencies)中添加你的aar,例如我写了一个自定义控件,生成之后为
myviewlayout-debug.aar,即可在其中加上:

compile(name: 'myviewlayout-debug', ext: 'aar')
到此,需要更改的配置就完成了,只需再点击下右上角出现的sync Now即可更新Gradle配置啦!。

4. 调用

调用方法与jar文件一样,只需导入包名即可调用里面的函数或者控件之类的。
例如,我之前测试的时候写了一个自定义标题栏myView.aar,
在module中的包名为:
com.example.myView

添加依赖后,在当前项目中的布局添加控件:
<com.example.kenjc.myview.MyBar

5.注意

aar不会将依赖的lib包打包进来, 哪里引用aar, 哪里要把aar需要的lib一块引入进来

6.使用aar中的activity

        //方法一 可行
        try{
            Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
            //这里的packetname 一定记住填写 调用方的packetname 因为 aar最终会被合并到调用方的manifest文件
            intent.setComponent(new ComponentName("com.examole.test",//packagename
                    "com.example.module.LYMainActivity"));//classname//
            startActivity(intent);
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(),e.getMessage() ,Toast.LENGTH_LONG).show();
 
        }
        return;
        //方法二 可行
    //        //此种方式 需要androidmanifest.xml添加相应的activity
    //        startActivity(new Intent(this,LYppMainActivity.class));
    //        return;
原创粉丝点击