Android中的SDK以及利用Android Studio生成aar

1、什么是SDK(Software Development Kit)

广义上的SDK:

  • 指的是为特定的软件包、软件框架、硬件平台、操作系统等建立应用程序时所使用的开发工具的集合。
  • 比如你在编辑器里敲代码的时候它会自动补全代码,自动错误检查,你点一下Run,它会调用编译器来自动编译,编译完它会调用iPhone的模拟器来运行,这就是SDK,提供整套的开发工具供开发者使用。

第三方SDK

  • 主要有三种风形式:.jar、.so、.aar
  1. jar文件:Java 提供的SDK 文件类型,里面包含的是纯Java编译过后的代码
  2. so文件:一般是 C和 C++打包的成库的文件。
  3. 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

在这里插入图片描述

在这里插入图片描述