App开发中为什么import android.app.Activity;
在 Android 开发中,使用 import android.app.*
原因如下:
1.标准 SDK 包路径:
android.app.* 是 Android 官方 SDK 中定义的标准包名。
开发者通过 Android Studio 或其他 IDE 编写应用时,引用的是 SDK 提供的类和接口。
2.系统源码路径与开发者的区别:
frameworks/base/core/java/android/app/
是App使用的 import android.app.*
对应 Android 系统源码中的实际文件路径。
这个路径是构建 Android 系统(AOSP)时使用的源代码目录结构,不是开发者在应用程序开发中直接使用的路径。
3.编译环境隔离:
应用开发者不需要关心底层实现的具体路径,只需要通过标准 API 来进行开发。
使用标准包名可以保证代码在不同设备和环境中的一致性。
4.模块化与封装:
Android SDK 将底层实现细节进行了封装,并提供统一的 API 接口。
这种设计使得开发者无需了解或依赖具体的源码路径,提升了开发效率和兼容性。
因此,在编写 Android 应用时,应该使用标准的包名 import android.app.*。
android.app.* 中的类会被打包进 Android 官方 SDK(Software Development Kit)中,供开发者在构建应用时使用。
以下是SDK详细的说明:
SDK 的组成:
android.app.* 是 Android 框架层的一部分,包含了如 Activity、Service、Application 等核心组件。
这些类最终会被编译成一个或多个库文件(如 framework.jar 或 android.jar),并作为 Android SDK 的一部分提供给开发者。
android.jar 的作用:
在 Android 项目中,开发环境会引用 android.jar 文件,它包含了所有标准 API 的类定义。
这个 jar 包中就包括了 android.app.、android.content.、android.view.* 等包中的类。
实际运行时,设备上的系统框架(如 /system/framework/framework.jar)会替代这个 jar 包来执行代码。
与系统源码的区别:
开发者使用的 SDK 是从 AOSP(Android Open Source Project)源码中提取和编译出来的,但隐藏了部分底层实现细节。
frameworks/base/core/java/android/app/ 是源码中的路径,而 android.app.* 是这些类在 SDK 中的公开接口形式。
版本控制与兼容性:
不同版本的 Android SDK(如 Android 10、11、12)会包含不同版本的 android.app.* 类。
Google 通过维护这些 SDK 来确保开发者可以编写跨设备兼容的应用程序。
总结: android.app.* 是被编译进 Android SDK 的标准 API 部分,以 android.jar 等形式存在。