使用Android Studio打jar包或者aar

在日常开发中,难免会遇到sdk的开发任务,而sdk的开发主要又有两种情况(至少目前自己的经历是这样),即打包的sdk中只有Java文件或者打包的sdk中既有Java文件又有资源文件,本篇博客将分这辆方面来说名如何使用Android studio打jar包。

目录

只含有java文件的jar包

含有资源和布局文件的jar

aar包的使用


只含有java文件的jar包

1.这里首先在Android studio中右键app或者工程-->new-->Modult-->Android Library,之后如下图:

2.给app添加testLib的依赖关系:右键app-->open module settings-->Dependencies-->+号(选择Modult dependency)-->选择testlib

3.在testlib中添加编写相应的逻辑代码。

4.完成后编译app,编译通过之后会在testlib/build/intermediates/intermediate-jars目录下会有debug和release两个文件夹(根据你app编译时候选择的是release还是debug可能只有一个),点开对应文件夹会看到classes.jar文件,其实这个jar包就是我们的testlib的jar形式。

注意:在网上很多其他教程指出的classes.jar的目录是build/intermediates/bundles/下面但是我测试发现3.0之后的studio都没有这个文件夹,所以如果有同学找不到我说的地址可以按照这个来尝试。

至此就可以拿到其他项目里面使用的,如果需要添加混淆可以参考我的另一篇博客关于proguard混淆的一份总结

有些同学可能觉得这个路径不太好找,这里提供一段gradle脚本,编译后自动对我们指定目录下的classes.jar文件进行copy和移动重命名。(在testlib的build.gradle文件中最外层添加如下task)

task makeJar(type: Copy) {
    //删除build/libs/目录中存在的jar
    delete 'build/libs/testlib.jar'
    //设置拷贝的文件目录
    from('build/intermediates/intermediate-jars/debug/')
    //copy后jar包的文件目录
    into('build/libs/')
    //include ,exclude参数来设置过滤
    //(我们只关心classes.jar这个文件)
    include('classes.jar')
    //重命名
    rename ('classes.jar', 'testlib.jar')
}

makeJar.dependsOn(build)

然后在Terminal中执行gradlew makeJar(Windows)或者./gradlew makeJar(mac)即可在build/libs下生成testlib.jar

含有资源和布局文件的jar

1.这里首先在Android studio中右键app或者工程-->new-->Modult-->Android Library,之后如下图:

2.给app添加testLib的依赖关系:右键app-->open module settings-->Dependencies-->+号(选择Modult dependency)-->选择testlib

3.在testlib中添加编写相应的逻辑代码。

4.完成后编译app,编译通过之后会在testlib/build/outputs/aar目录下会有testlib-release.aar和testlib-debug.aar文件(根据你app编译时候选择的是release还是debug可能只有一个),将这个aar文件导出给其他应用使用。

aar包的使用

1.在app的libs目录下添加aar包

2.在app的build.gradle中的android标签中添加:

repositories {  
        flatDir {  
            dirs 'libs'  
        }  
    }

3.添加aar依赖

dependencies {  
    compile fileTree(include: ['*.jar'], dir: 'libs')  
    compile(name: 'aar名字', ext: 'aar')  
}

当一个library类型的module需要引用aar文件时:

1.先在该library中按照上面123的代码,在library的module下的bulid.gradle中配置

2.任何依赖此library的module必须声明在它的build.gradle声明此 aar 的 lib 所在的位置,这个位置根据文件路径所确定。

android{    //android节点下配置
    repositories {
          flatDir {
            dirs 'libs', '../../../../library_module/libs'
          }
    }
}

3.配置完②步骤后,还要在project的build.gradle文件中配置,如下

allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs '../../../library_module/libs'
        }
    }
}

注意:dirs 所指示的是文件路径,所以针对不同的位置配置,“../../../library_module/libs” 所代表的路径也是不一致的。

参考资料:

https://www.cnblogs.com/aimqqroad-13/p/8514274.html

发布了10 篇原创文章 · 获赞 4 · 访问量 1002

猜你喜欢

转载自blog.csdn.net/qq_25097107/article/details/88778208
今日推荐