SDK乃是开发工具,就像很多JAVA初学者分不清楚JDK和JRE一样。DK,development kit,就是开发工具,他提供一系列API进行开发工作。实际生活中,很多人分不清楚,开发时(或设计时),和运行时两个概念,也就很容易混淆DK,和RE的区别。
开发时,是程序编码的时候,运行时,是真正运行的时候。有人会问,开发时候不是也运行的吗?是的这是“测试运行”,所以一般DK都包含RE,让你在开发时候,能够测试运行。但是RE可能不包含开发工具,比如不包含编译工具,RE就是一个平台,让你的程序包,是最小子集。
了解这些概念以后,题主问的这个问题,就有学术上的解释了,
SDK乃是开发套件,程序员在基于SDK上进行开发(有人会问了,我在eclipse开发啊?eclipse是IDE,不是SDK啊?是的,所谓IDE集成开发环境,正是基于SDK提供给你更友善的用户界面进行编程)。
API乃是应用程序接口,是封装好的提供功能的包,你自己的某个类,对外提供public方法,几对外是一个API,而比如java核心包,也是提供API给你调用的,API是用来实现功能的,预先封装好的代码块。
APP,我默认你指的是手机软件,其实APP在架构有时候也指“应用服务器”或者应用,狭义的APP就是利用SDK,结合了API以及自己编码实现的手机软件。