「AndroidStudio」编译 Jar 与 aar 包

2019-04-09  本文已影响0人  dongbingliu

求职的职位中有涉及 SDK 开发,其原理是封装 API 给第三方使用,Jar 包与 aar 包「包含资源文件」

Jar 包资源打包

简单记录打包流程:
NewModuleAndroid LibraryPackageNameFinish

AS 3.0 + 版本,build.gradle 文件中添加如下代码:

    task clearJar(type: Delete) {
        delete 'build/libs/mySdk.jar'////这行表示如果你已经打过一次包了,再进行打包则把原来的包删掉
    }

    task makeJar(type: Copy) {
        from('build/intermediates/packaged-classes/release/') //这行表示要打包的文件的路径,根据下面的内容,其实是该路径下的classes.jar
        into('build/libs1/')  //这行表示打包完毕后包的生成路径,也就是生成的包存在哪
        include('classes.jar')  //看到这行,如果你对分包有了解的话,你就可以看出来这行它只是将一些类打包了
        rename ('classes.jar', 'mySdk.jar')
    }

    makeJar.dependsOn(clearJar, build)

AS IDE 右侧 Gradle 工具控制中选择对应 Liabrary Model 中 makeJar

aar 资源打包

image.png

aar 打包重命名

    android.libraryVariants.all { variant ->
        if (variant.buildType.name == 'release') {
            variant.outputs.all {
                outputFileName = "faceai_${defaultConfig.versionName}_${getTime()}_release.aar"
            }
        }else{
            variant.outputs.all {
                outputFileName = "faceai_${defaultConfig.versionName}_${getTime()}_debug.aar"
            }
        }
    }

def getTime() {
    return new Date().format("yyyyMMdd", TimeZone.getDefault());
}
上一篇下一篇

猜你喜欢

热点阅读