求职的职位中有涉及 SDK 开发,其原理是封装 API 给第三方使用,Jar 包与 aar 包「包含资源文件」
Jar 包资源打包
简单记录打包流程:
NewModule
→ Android Library
→ PackageName
→ Finish
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.pngaar 打包重命名
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());
}
网友评论