怎么改变android studio中库的aar文件的输出目录?

 我来答
回味经典仔
2016-06-07 · 知道合伙人教育行家
回味经典仔
知道合伙人教育行家
采纳数:979 获赞数:31052
从事技术开发、生产技术管理等方面工作的工程技术文件攒写,总结,编写可行的方案,解决生产客户的问题

向TA提问 私信TA
展开全部

在android studio中,有两种方式:

一种是jar包,一种是带资源文件的aar包,

jar: 只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。

aar: 包含jar包和资源文件,如图片等所有res中的文件

这里将着重介绍如何使用本地的aar包

  1. 新建一个Demo项目


  2. 新建好的项目结构如下图:

    其中app是我们的主要module,

    libs下存放外部的library

    build.gradle是配置App module的,接下来主要对其操作。


  3. 复制外部aar包到libs目录下。



  4. 修改build.gradle 配置文件:

    1:添加

    repositories     flatDir {        dirs 'libs'    }}

    这个是添加一个本地仓库,并把libs目录作为仓库的地址。


  5. 2:修改dependencies:

    添加一行:

    compile(name:'usericonchooserutil', ext:'aar')

    其中name就是libs目录下usericonchooserutil.aar文件名称,

    ext,就是usericonchooserutil.aar的扩展名


  6. 重新编译项目:

    从工具栏依次选择:"Build"-->"rebuild project"


  7. 编译完成后,在app/build/intermediates/exploded-aar/ a就可以看见我们引用的aar包内容了,其中jar目录下是jar文件,res下是我们aar包里的资源文件。


  8. 这个时候我们就可以在项目中使用第三包的类了,如下图:


百度网友031b46b7e
2017-08-09 · TA获得超过255个赞
知道答主
回答量:48
采纳率:100%
帮助的人:9.2万
展开全部


设置Android Studio通过Gradle生成的AAR文件的位置路径

最近在写一个SDK,随着SDK依赖的库越来越多,生成的AAR文件也越来越多,由于SDK功能过多,不能把多个AAR合并成一个,所以每次提供时都需要把多个AAR文件提供出来。

AAR默认生成路径是[\build\outputs\aar],每次都要一个个项目的找出来然后复制,嫌太麻烦了,写了个手动拷贝脚本,包含:删除原AAR、编译生成AAR、把AAR拷贝至指定目录。

Gradle语法之前从没关心过,这次也当熟悉下,task肯定还有很多需要提升的地方,欢迎提出来。

用法:

复制以下代码片段到项目所在的build.gradle文件中,在Android Studio右边的Gradle里面点开Tasks,Other里找到aarRelease,双击即可,记得把里面的项目路径改为自己的实际路径,这里只提供一个思路而已。

// ---------- 编译并发布AAR (删除旧AAR,编译新AAR,拷贝新AAR至同一目录) ----------

task aarRelease(type: Copy) {

    // 任务开始
    println "----------> AAR Release Task Start <----------"

    // 根路径 如:E:\03_AndroidClient\other\IM_SDK\trunk\IM_SDK
    def rootPath = rootProject.rootDir.path
    // AAR所在的编译路径
    def buildPath = "/build/outputs/aar"
    // AAR输出路径
    def aarOutPath = rootPath + "/aar_release"

    // IM主SDK
    def imPath = rootPath + "/im-sdk" + buildPath + "/im-sdk-release.aar"
    // IM依赖的 百度地图SDK
    def baiduLbsPath = rootPath + "/im-sdk-baidu-lbs" + buildPath + "/im-sdk-baidu-lbs-release.aar"
    // IM依赖的 百度鹰眼SDK
    def baiduTracePath = rootPath + "/im-sdk-baidu-trace" + buildPath + "/im-sdk-baidu-trace-release.aar"
    // IM依赖的 直播SDK
    def livePath = rootPath + "/im-sdk-live" + buildPath + "/im-sdk-live-release.aar"
    // IM依赖的 图像选择库SDK
    def matissePath = rootPath + "/im-sdk-matisse" + buildPath + "/im-sdk-matisse-release.aar"

    // 封装数组
    def modulePaths = [imPath, baiduLbsPath, baiduTracePath, livePath, matissePath]

    // 删除AAR输出目录
    println "Delete -> " + aarOutPath
    delete aarOutPath
    // 循环删除各个AAR编译目录
    for (path in modulePaths) {
        println "Delete -> " + path
        delete path
    }

    // 执行编译AAR脚本(原生脚本)
    dependsOn 'assembleRelease'

    // 循环拷贝AAR到ARR输出目录
    for (path in modulePaths) {
        // 显示开始拷贝
        println "-> Start of current copy <-"
        // 当前目录
        println "From : " + path
        from path
        // 拷贝至 aarOutPath
        println "Into : " + aarOutPath
        into aarOutPath;
        // 显示当前拷贝结束
        println "-> End of current copy <-"
    }
    // 任务结束
    println "----------> AAR Release Task End <----------"

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式