File f = new File(fullPath);
long freeSpace = f.getFreeSpace();
我在android应用程序中使用上面的片段。我的应用程序编译的很好,用SDK-15JAR。
我运行这个应用程序的android手机是Froyo。
我在运行时得到以下错误
java.lang.NoSuchMethodError: java.io.File.getFreeSpace
我查找了getFreeSpace()的文档,它说是从API-9开始的。据我所知,froyo符合API-8 (以及上面,我猜?)所以我知道(但不太明白),我不能在platform上调用这个函数,但是我可以在API-8之上的平台上调用它。
,所以我的问题/模棱两可是
考虑到应用程序编译得非常好,我假设函数f.getFreeSpace()及其实现在我正在使用的API-15的jar中是可用的。当我的应用程序使用API-15的jar文件编译并且应该在jar中实现getFreeSpace()时,android为什么会抛出一个运行时异常?如果API-15 jar中有实现,那么平台Froyo - API-8为什么会产生问题呢??
发布于 2012-11-06 16:55:23
我假设函数f.getFreeSpace()及其实现在我正在使用的API-15的jar中可用。
“API-15的罐子”不是你想的那样。
在编译时,您所针对的JAR不是APK的一部分。它是一系列存根类和方法,足以让编译继续进行。这些类和方法的真正实现是在设备的固件中。
当我的应用程序使用API-15的jar文件编译并且应该在jar中实现getFreeSpace()时,android为什么会抛出一个运行时异常?
您可以在编译时使用getFreeSpace()
,使用编译瓷砖JAR。您将不会在运行时在API 8设备上使用getFreeSpace()
,因为该方法不存在于该版本的Android中。
如果API-15 jar中有实现,那么平台Froyo - API-8为什么会产生问题呢??
因为您认为"API-15 jar“只在编译时使用,而不是在运行时使用。
过去在Android开发者网站上有更多关于这方面的资料,但在2012年早些时候的重新设计中,它似乎已经丢失了。
https://stackoverflow.com/questions/13254749
复制相似问题