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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么改变android studio中库的aar文件的输出目录相关的知识,希望对你有一定的参考价值。

设置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 <----------"

参考技术A 在Android Studio菜单上,依次选择:FileNewXmlLayout xml File Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。在IDEA的基础上,Android Studio 提供:基于Gradle的构建支持Android 专属的重构和快速修复提示工具以捕获性能、可用性、版本兼容性等问题支持ProGuard 和应用签名基于模板的向导来生成常用的 Android 应用设计和组件功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览

Android studio导出AAR包问题整理。

最近因为项目需求开始整理一个SDK 以AAR的方式提供出去。在整理的过程中遇到了很多坑。

以下是一些总结希望能帮助遇到同样问题的人。

1.怎么导出AAR,这种文章太多了,我贴一个大家可以做参考。

http://blog.csdn.net/g777520/article/details/53331797

如果不关心 怎么生成jar包就直接往下滑,看第二节。基本操作就在这儿了。

 

2. 第一步的操作导出的AAR只是当前lib的代码内容,当前lib所依赖的其他lib或者依赖(jar包除外)都不会被打进AAR中。

类似 compile ‘tv.danmaku.ijk.media:ijkplayer-java:0.7.9’ 
跟 compile project(‘:XXLib’)的依赖, 都不会打进去。这跟需求不匹配啊。需要解决。
查阅了很多资料如下:
http://blog.csdn.net/wwj_748/article/details/53230706
是相对详细的,但也只是简单介绍。
从文章中定位到了一个第三方的库是专门解决这种问题的。
使用的过程中遇到了一些问题,这些问题主要是
新老Android studio版本上文件的改动导致的。参考该工程的issue基本都是可以解决的。
说下重点你可能会遇到的一个错误的解决办法吧。

* Where:
Script ‘/Users/gy/temp/baiduIJK/LiveRoomLib/fat-aar.gradle‘ line: 220

* What went wrong:
Execution failed for task ‘:LiveRoomLib:generateRJava‘.
> /LiveRoomLib/build/intermediates/exploded-aar/baiduIJK/XXXLib/unspecified/AndroidManifest.xml (No such file or directory)

这个错误是在导AAR的lib 下exploded-aar这个目录里没有其所以来的 lib的内容,较快的解决办法就是去XXXLib的  

XXXLib/build/outputs/aar

目录下将XXXLib的 arr coppy 到/LiveRoomLib/build/intermediates/exploded-aar/这个目录下进行解压,然后按照这个路径去存放你的工程。

亲测有效。

3.在翻阅资料的过程中又发现了

 https://github.com/Vigi0303/fat-aar-plugin

这个lib说是解决了大部分的问题可以快速的导出需要的AAR,没有尝试,你们可以试下。

 

 
 
 
 
 



以上是关于怎么改变android studio中库的aar文件的输出目录的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中库的 NoClassDefFoundError [重复]

如何发布 Android .aar 源码让 Android Studio 自动找到它们?

如何在 Android Studio 中使用 Prefab 导出创建 AAR?

android studio aar打包不包含jar

怎么让android studio的编译的aar防止反编译

android studio aar能加密吗