检查android低api兼容性的代码

时间:2015-07-06 22:52:20

标签: android android-studio android-support-library

我的项目minSdkVersion设置为10。 MainActivity是来自 support.v7.app.AppCompatActivity 的ActionBarActivity。
Android 2.3.7(api10)上的默认方法.invalidateOptionsMenu()崩溃,所以我必须使用兼容性方法.supportInvalidateOptionsMenu(); 我有一个问题:

为什么Android Studio没有提醒我invalidateOptionsMenu不适用于较旧的api?

只有在我成功构建了一个apk并在api10设备上运行它并且它崩溃之后我才理解这一点......

如何在没有任何实际测试的情况下进行检查?

与PopupMenu相同的事情 如果我错误地导入android.widget.PopupMenu而不是android.support.v7.widget.PopupMenu我没有收到来自AndroidStudio的警告,minSdk设置为10而PopupMenu将无法在旧Android上使用

1 个答案:

答案 0 :(得分:2)

supporting different platform versions的Google文档提供了一些很好的见解。他们甚至解决了您正在处理的问题:

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

除此之外,我最好的建议是将目标API设置为您要测试的平台,看看它是否为您提供了任何编译器级别标志,如果没有在模拟器中快速运行它。希望有所帮助!