安卓开发SDK学习

学习目标:

清晰开发SDK流程

什么是SDK:

SDK全称 Software Development Kit,广义上的 SDK 是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合,狭义上的 SDK 则是基于系统 SDK 进行开发包装的、新的、独立的、能够完成特定功能并返回相关数据的一组工具的集合。
简单来说:将一些业务逻辑独立出来,打包成jar、so、aar,暴露一些APIs给外部调用,也可以称为SDK。如推送SDK,支付SDK,地图SDK…


jar和aar包区别:

JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。
Aar中Android库项目的二进制归档文件,包含所有资源,class以及res资源文件全部包含。


SDK包开发流程:

1)设计sdk 主要从:稳定性,性能,安全三方面考虑。
2)开发编码。
3)编写集成文档。

安卓SDK开发注意点

1)资源id命名
Values中的colors、strings、styles中的id命名应当注意保持一定的唯一性(如:命名统一加项目前缀),避免与主项目中的资源id冲突,造成SDK中的资源被覆盖,如theme、string等等。

2)资避免创建Application对象
若SDK中定义了Application对象,而主项目也定义了Application或者应用了第三方Application,则需将android:name属性替换掉,才能正常 编译,因为一个App只能指定一个Application,若直接替换,则会造成SDK中的Application无法初始化。

解决方案:
1、避免在SDK中创建Application对象,暴露出一个初始化方法,在主项目的Application相关方法如onCreate()中注入相关参数执行;
2、若无法避免,则可指定主项目的Application继承自SDK中的内置Application,问题可以解决。

3)无法将第三方库打包进aar
library打包出来的 AAR ,不会将依赖的第三方库打包进去。

解决方案:
1、将AAR发布到远程仓库,这样gradle依赖下来的时候就会自动依赖第三方库了。
2、在主项目中显式指定SDK中的第三方依赖包,如常见的gson、okhttp等等…

4)混淆问题
默认情况下,proguard-rules.pro中的混淆配置是不会被打包进aar中的所以一般需要在主项目中手动指定混淆规则。
解决方案:
指定consumerProguardFiles属性,自定义引入的混淆规则,即可将*.pro文件打包进入aar中,项目打包时就会自动合并该配置文件。

consumerProguardFiles 'proguard-rules.pro'

如何保证提供的SDK安全

1)添加混淆。
2)尽量少暴露接口/方法。

如何二次打包(封装)AAR

1)先将提供的aar解压到本地。
2)创建一个新的moudle,将classes.jar文件放到新的moudle。
3)将对应的解析文件放到对应的文件夹。
4)将jar包依赖到.gradle下。

生成aar包

在这里插入图片描述
在这里插入图片描述

2.9aar使用方式

 1.将打包出来的arr文件加入到libs中
 2.在module的build.gradle中与android{}平级下加入
       repositories {
          flatDir {
           dirs 'libs'
               }
           }
  3.在module的build.gradle中的dependencies里加入
   implementation(name: 'sdk', ext: 'aar')//注意这里加入的名字没有后缀名
  4.同步后可以在External Libraries中查看新加入的包
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值