Android 当 minSdkVersion < targetSdkVersion 时 lint 不显示错误,如果 targetSdkVersion=23 (Marshmallow)
Android lint not showing errors when minSdkVersion < targetSdkVersion, if targetSdkVersion=23 (Marshmallow)
如问题所述,我正在使用 SDK 23 进行编译,以 SDK 23 为目标,并使用最小 SDK 版本 19。Android Studio/Eclipse 在使用来自API 级别 20/21/22/23,但是它不适用于 API 级别 23。
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Incorrect cast for a system service, correctly caught by lint
WifiManager wifiManager = (WifiManager) getSystemService(Context.ALARM_SERVICE);
Fragment fragment = new Fragment();
fragment.isDetached(); //API level 13 (correct, no warning)
fragment.setMenuVisibility(true); //API level 14 (correct, no warning)
finishAndRemoveTask(); //API level 21 (correct, warning)
getMediaController(); //API level 21 (correct, warning)
getReferrer(); //API level 22 (correct, warning)
getSearchEvent(); //API level 23 (INCORRECT: no warning)
showLockTaskEscapeMessage(); //API level 23 (INCORRECT: no warning)
}
}
我用http://developer.android.com/sdk/api_diff/23/changes.html选了几个方法来测试。
我没有立即在 google 或 http://developer.android.com/tools/help/lint.html, http://tools.android.com/tips/lint-checks 上看到任何相关信息。
没关系,我在 AOSP Issue Tracker 发现了一个未解决的问题,看起来 platforms-23/android.jar 没有包含在 apigenerator 脚本中。 Google 正在修复。
如问题所述,我正在使用 SDK 23 进行编译,以 SDK 23 为目标,并使用最小 SDK 版本 19。Android Studio/Eclipse 在使用来自API 级别 20/21/22/23,但是它不适用于 API 级别 23。
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Incorrect cast for a system service, correctly caught by lint
WifiManager wifiManager = (WifiManager) getSystemService(Context.ALARM_SERVICE);
Fragment fragment = new Fragment();
fragment.isDetached(); //API level 13 (correct, no warning)
fragment.setMenuVisibility(true); //API level 14 (correct, no warning)
finishAndRemoveTask(); //API level 21 (correct, warning)
getMediaController(); //API level 21 (correct, warning)
getReferrer(); //API level 22 (correct, warning)
getSearchEvent(); //API level 23 (INCORRECT: no warning)
showLockTaskEscapeMessage(); //API level 23 (INCORRECT: no warning)
}
}
我用http://developer.android.com/sdk/api_diff/23/changes.html选了几个方法来测试。
我没有立即在 google 或 http://developer.android.com/tools/help/lint.html, http://tools.android.com/tips/lint-checks 上看到任何相关信息。
没关系,我在 AOSP Issue Tracker 发现了一个未解决的问题,看起来 platforms-23/android.jar 没有包含在 apigenerator 脚本中。 Google 正在修复。