首先要明白aar与jar包的区别,aar包是android archive 的缩写,就是由安卓定义的jar类型,可以将manifest下的配置,如你在编写sdk的时候,需要集成方将你的service或者其他的组件在manifest中配置,在提供sdk时,都需要提供各样的SDK的集成文档,虽然有集成文档了,但仍然是避免不了有相关开发人员在集成SDK时将相关配置项遗漏,导致SDK未能正常运行,此时aar包就是一种比较好的解决方案,aar包同时也可以将res目录下的东西一并打包进去;
对于aar包的生成是很简单的如果你是处于android studio的gralde编译环境,只需要你的SDK项目能用MakeProject正常构建成功,就会在android library 下的build/outputs/aar/xxxxx-release.aar ,aar包生成后就可以进行引用,引用aar包也是非常简单的,将aar放在集成项目的libs,同时在budild.gralde中配置上以下 dependencies { compile(name: 'release-library', ext: 'aar') }
接上篇写的文章,在打包jar包时,可以在脚本中写入脚本代码,将对应libs下的引用包选择性打包,因为比如你的SDK中引入了supportV4 这种包,你如果强制将supportV4打包进去了,当别人在使用你的SDK时,由于他人的项目本身就引用了supportV4,那么此时集成者的项目估计无法正常骗译通过,会报 dex的错误,因为有两个supportV4了,所以我们在提供jar包的时候,避免将安卓本身的一些包打进去SDK中,但是我们可以将我们libs下引用 的jar包一并提供出去,由集成者选择性,是否需要集成。
补充说明上篇文章中的选择性打包的脚本,需要在项目的 gralde.properties中配置相关选项
# Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #如果需要号码归属地数据库,则选择true,不需要则false phoneZoneEnable=false #是否需要将supportV4包打包进去,true需要,false不需要 includeSupportV4=false #是否是发布测试版本还是正式版本 publishReleaseVersion=false #//正式包仓库地址 releaseRepositoryUrl=http://192.168.1.81:8081/repository/maven-releases #//测试包仓库地址 snapshotRepositoryUrl=http://192.168.1.81:8081/repository/maven-snapshots #// 定义要上传的aar所在仓库的Group,可自定义,但后续引用处要与此一致 repositoryVersion=1.0.0 repositoryArtifactId=btsdk repositoryGroupId=com.cookoo repositoryClientVersion=1.0.0 repositoryClientArtifactID=btsdkclient repositoryClientGroupId=com.cookoo #发布者账号 publishUserName = admin #发布者密码 publishUserPassword = admin123 #以下两项目为可变项参数 #开发者标识 developerId = sunjr #版本发布修改问题点 versionDescription=Cancel bt music report play state to app immediately. clientVersionDescription=First version commit. #以上两项目为可变项参数, developerName_jiang = Deson developerEmail_jiang = kenderson@163.com #以下为蓝牙SDK注解框架的debug配置 #org.gradle.daemon=true #org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8009 #此处,如果不是注解框架调试,请放开 #org.gradle.daemon=false #org.gradle.jvmargs=-Xmx1536m #org.gradle.configureondemand=false