我能';我不明白为什么我们需要将Android sdk导入到项目中

我能';我不明白为什么我们需要将Android sdk导入到项目中,android,android-2.2-froyo,Android,Android 2.2 Froyo,我有一个奇怪的问题,当我们开发android应用程序或其他应用程序时,我们需要将android.jar导入到我们的项目中,我知道如果我们不将该jar导入到项目中,我们就无法编译项目,也无法生成apk文件,但我的问题是我们的手机是建立在android系统上的,Android系统包含Android.jar中的所有类,当我们在Android系统上运行apk文件时,它将使用哪些类。我的意思是,在Android系统框架和Android.jar中都存在一个Activity类,应用程序运行时将使用哪个活动类。

我有一个奇怪的问题,当我们开发android应用程序或其他应用程序时,我们需要将android.jar导入到我们的项目中,我知道如果我们不将该jar导入到项目中,我们就无法编译项目,也无法生成apk文件,但我的问题是我们的手机是建立在android系统上的,Android系统包含Android.jar中的所有类,当我们在Android系统上运行apk文件时,它将使用哪些类。我的意思是,在Android系统框架和Android.jar中都存在一个Activity类,应用程序运行时将使用哪个活动类。请有人帮我解决这个问题。非常感谢Java是一种编译语言

这是一个分两步的过程——首先必须将代码编译成字节码,然后必须实际运行编译后的字节码(通常称为执行)

您可能已经注意到编译错误和运行时错误之间的区别。例如,在eclipse中,编译错误通常被视为红色下划线和红色x。应用程序在手机上运行时发生运行时错误

知道我在说什么吗


因此,编译环境(Eclipse)和运行时环境(Android)之间存在着完全的分离。因此,他们都需要知道Android类,并且必须导入Android sdk。

Android在Delvik上运行,Delvik读取.dex文件;你用java编写你的应用程序,它是.java文件。这是一个详细的答案。因此,如果我在android.jar中的一个类中添加了一个方法,但该方法在android框架(运行时)中不存在,它是否会抛出异常,尽管我可以通过编译过程。是的。您可以使用较新版本的android进行编译,并在较旧版本的android(或Java)上运行,并获得
ClassNotFound
MethodNotFound
@edthird+1的运行时异常,但android不是一种符合规范的语言,它是一个框架。