1、什么是SDK(Software Development Kit)
广义上的SDK:
- 指的是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合。
- 比如你在编辑器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是SDK,提供整套的开发工具供开发者使用。
第三方SDK
- 主要有三种风形式:.jar、.so、.aar
- jar文件:Java 提供的SDK 文件类型,里面包含的是纯Java编译过后的代码
- so文件:一般是 C和 C++打包的成库的文件。
- aar文件:aar 名字来源于 Android Archive,见名知义,是一个 Android 库项目的二进制归档文件。aar 库文件里面,包含了 jar 和 so,还有资源res等文件,结构等同一个app。
补充:什么是API(Application Programming Interface)
- 翻译成中文就是"应用程式介面",其实这样翻译不好,应该说是"程式沟通介面"。
- 翻译为介面,顾名思义就要沟通两个不同的东西用的,通常由一组函式库所组成。
- 在一个 同一个平台 下的 两个不同东西(程式 or 系统),为了能取用对方的功能等等,所以一个 【程式X】 写了一组函式,让 同一平台的其他程式 取用 【程式X】 的功能,那组函式就可以说是那个 【程式X】 对外开放的 API。
2、利用Android Stuido生成aar
2.1、新建module
2.2、创建方法,配置代码混淆
- LeonAPI是暴露给外部的API,所以不能混淆,混淆后就找不到了
package com.leon.leonlib
import androidx.annotation.Keep
/**
* 放置被代码混淆掉 ,在Kotlin中可以使用@Keep注解
*/
@Keep
object LeonAPI {
fun getCurrentTime(): String {
return "系统当前时间:${LeonTime().time()}"
}
}
- LeonTime实现业务功能的核心代码,需要混淆,防止被别人看到
package com.leon.leonlib
import java.text.SimpleDateFormat
import java.util.Calendar
class LeonTime {
fun time(): String {
val currentDateTime = Calendar.getInstance().time
val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
return formatter.format(currentDateTime)
}
}
- build.gradle(:leonlib)中配置代码混淆,若不配置,别人就可以看到我们的aar中的源码了。
2.3、导出aar
- 双击assembleRelease
- 等待运行结束,便可以拿到aar
- 混淆后的aar是看不到核心源码的,只能看到我们暴露的API类
- 未混淆的aar可以看到核心源码
2.4、将aar给其他项目引用
- 将aar复制到其他module或其他项目的libs目录下
- 配置build.gradle(:app)
- 调用aar中的API