使用JDK中的类而不是android SDK(ADK)

时间:2016-03-11 08:54:56

标签: java android android-studio

是否有可能使用JDK(1.7)中的类而不是Android SDK(ADK,API 23)?

我需要使用的课程存在于JDK(1.7)中的Android SDK(API 23)中。默认情况下,使用ADK中的类。但是我想使用JDK中的类。

在我的情况下,我想使用放在JDK和ADK中的包DatatypeFactory.newInstance(factoryClassName, classLoader)中的javax.xml.datatype。 由于实现上的差异,我想使用JDK中的类而不是ADK。

如何使用JDK中的类而不是ADK中的类?

1 个答案:

答案 0 :(得分:3)

你做不到。不过只是简单地切换import语句。 您在Android上作为其目标平台运行的代码将无法访问Java SDK类,因此代码将无法加载类,或者它将使用完全相同的完全限定名称加载类的Android版本(这是您的情况) 。

如果要使用Java SDK中的特定实现,则必须在目标平台上使用它。

您有2个选项,但两者都不好:

将Java SDK用作库

rt.jar(~50MB)带入您的项目。然而,这会产生许多潜在的问题,因为Android SDK和Java SDK镜像了一些包和类,最终可能会加载错误的版本。

将来源置于

第二个选项 - 只是略好一点 - 是将该类的源代码引入您的项目,只有当Android SDK可以满足其所有依赖项时,或者也可以将其作为源代码引入。这会很痛苦......

然而,正确的解决方案是

拥抱生态系统

我不知道你的具体要求是什么,但是我敢打赌Android的这个类的实现与Java的实现非常接近。如果您无法通过Android SDK实现某些目标,请尝试在此处询问该特定问题,或者搜索可以实现您需要的第三方库。也许解决方案比你想象的要容易。