我如何禁止尝试在Android Studio中为Marshmallow构建?

时间:2015-12-11 17:42:16

标签: android android-studio

我正在构建一个应用程序,由于折旧的isBoundKeyAlgorithm(String algorithm)函数,该应用程序将被仅在API级别23(Marshmallow)中提供的keyInfo.isInsideSecureHardware()函数替换,仅适用于API级别18在API级别23和转发上通过22,OR

我在Android Studio中创建了该项目。然后我告诉gradle构建文件构建最高SDK级别为22,并且还在Android Studio中卸载了23级API。

问题在于,这使项目无法构建,并且遗漏了与API级别23相关的丢失文件的大量错误。

我如何告诉Android Studio我目前正在构建的应用程序不会在API级别22之上运行,并且它不应该尝试包含与API级别23相关的任何文件(它是一些"带下划线的微调器&# 34;或任何遗漏的东西)

2 个答案:

答案 0 :(得分:1)

仅仅因为不推荐使用方法并不意味着您无法使用它构建应用程序。只需检查Build.VERSION.SDK_INT

即可保护您的通话
boolean isHardwareSecured;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    isHardwareSecured = KeyChain.isBoundKeyAlgorithm(algorithm);
} else {
    isHardwareSecured = keyInfo.isInsideSecureHardware();
}

您应该始终使用最新的SDK进行编译,因为较新版本的支持库(即当前版本23.1.1)依赖于较新的SDK - 这可能是为什么切换回22编译失败的原因。

答案 1 :(得分:0)

似乎您卸载了API 23,但仍在最新版本中使用构建工具和平台工具。将它们降级并尝试Clean而不是Rebuild project

此问题也可能导致在构建文件夹中,您仍然拥有符合最新Android版本的文件。从项目存储库中删除&#39; build&#39;文件夹。

希望有所帮助