自我进阶(三) 编译软件开发工具包--SDK

一、什么是Android SDK、API

Android SDK(Software Development Kit)提供了在Windows/Linux/Mac平台上开发Android应用的开发组件,Android支持所有的平台,其包含了在Android平台上开发移动应用的各种工具集。
工具集不仅包括了Android模拟器和用于Eclipse的Android开发工具插件(ADT),而且包括了各种用来调试、打包和在模拟器上安装应用的工具。
Android SDK主要是以Java语言为基础,用户可以使用Java语言来开发Android平台上的软件应用。通过SDK提供的一些工具将其打包成Android平台使用的apk文件,然后用SDK中的模拟器(Emulator)来模拟和测试软件在Android平台上运行情况和效果。

为Android 的开发提供开发环境,提供为们所需要的工具集,而API 测试我们所需要的那个工具

例子:

A 开发的应用,B想使用,那么A 把自己写的代码打包成jar或者其他,又B来使用,A 代码中B要使用的功能就是API 了

二、到底是使用官方提供的SDK 还是自己编译的SDK 呢?

  1. 这就好比是你自己在Android studio 中开发的Demo有一个依赖A,和一个别人写的依赖B,两者功能相同,那却别是什么呢?

依赖(SDK,以下称SDK)的存在可以很有效的提高开发效率、代码质量、复用率减少项目体积等等好处,一个成熟的SDK具有体积小(相对)、功能易用、扩展性(最主要)好等优点,

  • 那我们拿上面的A、B 来说,有一个新的功能添加的时候,是自己的代码非常容易修改,B 就相对难搞了,
  • A 中只有自己想要个功能的代码,B 不能剔除无用代码

当然上面的原理在SDK 中还是有用的

三、编译自己的SDK

以下两篇文章是编译前准备的,推荐阅读
自我进阶(一) Android 源码编译,环境准备

自我进阶(二) Aandroid 源码编译

 1. 源码文件AndroidSoucre文件,初始化编译环境
. build/envsetup.sh
 2. 编译SDK
make sdk

使用的还是make命令

编译完成之后,配置环境变量

1. sudo vim /etc/profile
在最后一行插入:
export PATH=$PATH:路径/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=路径/target/product/generic_arm64
退出保存

说明:
2. /out/host/linux-x86/bin有我们要执行的emulator命令
3. /target/product/generic_arm64 是Android镜像存放目录,执行emulator命令时会用到

四、 运行emulator

emulator -partition-size 20480

android 使用的Android 镜像文件为system.img、userdata.img和ramdisk.img,不单独指定的时候是使用我们指定的编译目标的目录 out/target/product/generic_arm64下的文件,编译内核默认/prebuilts/qemu-kernel/arm64/kernel-qemu

五、了解emulator常用的命令

emulator -help 查看所有命令
  • -sysdir <dir>

earch for system disk images in dir 在目录中查找系统磁盘映像

  • system <file>

从<file读取初始系统图像

  • ramdisk

ramdisk映像(默认值/ramdisk.img

为什么单独说这三个命令呢?

前面说过Android 模拟器运行需要四个文件

  • Linux Kernel镜像zImage
  • system.img
  • userdata.img
  • ramdisk.img

后面三个是Android镜像,第一个是系统内核,一部分编译Android的人就是希望将自己编译的镜像文件刷到自己的机器上,重新编译部分SDK 或者添加自己定制的应用,重新打包system.img来满足自己的需求

上一篇:自我进阶(二) Aandroid 源码编译

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章