因为APK编译是在高版本SDK下编译生成的,但是手机设备是低版本。
具体可以查看AndroidManifest.xml
中android:minSdkVersion
的值。
而且,随着安卓版本的不断更新,新的API不断提供,有时候高版本的API会在低版本发生crash。
如果minSdkVersion
设置过低,在build的时候,会报错(Call requires API level (current min is ))。
为了编译可以通过,可以添加@SuppressLint("NewApi")
或者@TargeApi($API_LEVEL)
注解,但这样只是编译通过,运行时依然会Crash。
若要兼容低版本,需要判断运行时的版本,在低版本系统中不调用此方法,同时为了保证功能的完整性,提供低版本功能实现。SDK版本(一个自然数字)可以通过下面的代码确定:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.FROYO) {
// 使用高版本的API
} else {
// 使用低版本的API
}
文档内容是否对您有帮助?