美文网首页
Android jar和aar打包及引入总结

Android jar和aar打包及引入总结

作者: 静水红阳 | 来源:发表于2021-09-10 13:46 被阅读0次

前言

在Android开发过程中,不可避免的会使用到一些三方库,这些库多是为*.jar,*.so,*.aar类型的文件,其中so库多是为C文件打包行程的库,本文暂不做讨论;jar包和aar包我们都可以通过建立自己的module进行生成,本文着重说明这两种文件的区别及生成。

一、jar包和aar包含内容区别

1. jar

jar文件可以说是和客户端平台无关的文件,其只包含class文件与清单文件。

由于jar包内不包含图片这种资源文件,所以在打jar包时module里的res资源文件夹都是不会打进包里的,如果要引入资源,则需要配置assets文件夹,将资源放在assets文件夹里。

2. aar

aar文件和Android客户端平台紧密相连,是Android库项目的二进制归档文件,其包内不仅包含有class文件,也包括有资源文件。

二、打包方法区别

1. jar打包

Android Studio中可以很方便的通过Gradle生成jar包。

首先我们需要在modulebuild.gradle文件里新定义一个jar包任务:

//task to export contents as jar
task exportJar(type: Copy) {
    //删除原有jar包
    delete 'build/libs/AndroidPlugin.jar'
    //从build中查找jar包文件
    from('build/intermediates/runtime_library_classes_jar/release/')
    //copy到指定目录
    into('build/libs/')
    include('classes.jar')
    ///Rename the jar
    rename('classes.jar', 'AndroidPlugin.jar')
}
exportJar.dependsOn(build)

这样的话就能够在Gradle中查看到任务:moduleName/Tasks/other中查找到上述任务:

jar包打包任务.jpg

执行上述任务,我们能够在在build/libs/目录下找到jar包文件AndroidPlugin.jar

2.aar打包

aar包目录是:build/outputs/aar,,如下图:

AAR位置.png

如果当前工程内没有build目录,可以在Gradle中执行当前module的assembleRelease构建生成release的aar包,如下图:

aar构建.jpg

三、引入区别

jar包和aar包引入我们在接入第三方SDK时经常能够遇到,在此简单记录一下常规引入方式:

1. jar包引入

我们可以将jar包文件放置在app的libs目录下,如下图:

jar包引入目录.jpg

然后在module下的build.gradle中设置如下配置:

android {
...
        sourceSets {
        main {
            java.srcDirs = ['src/main/java']
            jniLibs.srcDirs = ['libs']
            assets.srcDirs = ['assets']
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

之后重新编译,如果编译后能够打开jar包,就是引入完成了,如上图。

2. aar包引入

aar包引入和jar包引入比较类似,同样是将包放在libs目录下:

aar包引入目录.jpg

然后在module下的build.gradle文件中添加如下配置:

repositories {
    flatDir {
        dirs 'libs'
    }
} 
dependencies {
    implementation(name:'ttsLib-release', ext:'aar')
}

然后在进行重新编译,之后可以在lib目录下看到引入的包,这样就是引入完成了:

AAR查看目录.jpg

其他问题

在jar包的生成中,由于我们是通过Gradle去进行构建生成的,但是Gradle生成jar包的位置各个版本并不完全一致,在书写脚本时最好不要直接copy代码,先在build文件目录中找一下你的jar包是否存在,及时更新路径。

附录记录下仓库上传配置,在module下的build.gradle文件中添加如下配置:

uploadArchives {

    repositories {

        mavenDeployer {
            repository(url: "") {
                authentication(userName: "", password: "")
            }
            snapshotRepository(url: "") {
                authentication(userName: "", password: "")
            }

            pom.groupId = "android.library"
            pom.artifactId = "voice"
            pom.version = "1.0.0"
            pom.packaging = "aar"

        }
    }
}

然后添加对应的地址及身份校验,执行此任务即可。

总结

本文是对于Android中jar包和aar包的区别,打包及引入做一个简单记录。

相关文章

网友评论

      本文标题:Android jar和aar打包及引入总结

      本文链接:https://www.haomeiwen.com/subject/vjagwltx.html