我使用android studio 1.0.1创建了一个聊天项目
这是 gradle 构建属性
应用插件:'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "chat.mchattrav.chattrav"
minSdkVersion 5
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
当我运行应用程序时,我立即收到此错误消息
unfortunately app has stopped
当我调试应用程序时,我得到了这个异常信息
java.lang.NoSuchMethodError: android.os.StatFs.getBlockSizeLong
看来我使用的 api 级别低于此方法所需的“18”
我可以在不需要增加 api 级别“minSdkVersion”的情况下解决这个问题吗?
我可以改用支持库吗?
最佳答案
如果您需要支持低于 18 的 SDK,那么您需要处理它。
存在两种方法:
public int getBlockSize ()在 API1 中添加,在 API18 中弃用
和
public long getBlockSizeLong () API18新增
你的项目使用第2个,你需要找到所有的用法并关心运行android版本,例如
StatFs staFs = new StatFs("path");
long size = 0;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){
size = staFs.getBlockSizeLong();
}else {
size = staFs.getBlockSize();
}
// use size ...
关于android - 使用 getBlockSizeLong 方法后出现 java.lang.NoSuchMethodError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890436/