android - 对于 android API 级别不一致,如何获取编译时错误而不是 NoSuchMethodError 运行时错误?

标签 android xamarin compile-time nosuchmethoderror android-api-levels

我有一个带有 android:minSdkVersion="15"android:targetSdkVersion="21" 的 Android Xamarin 应用程序。事实证明,如果我使用的是 API 15 以上的东西,IDE(xamarin studio、visual studio)和编译过程将被忽略,这不是预期的行为。

例如,API 21 中有一个方法 Path.addArc(float,float,float,float,float,float),我可以将它与上面的 list 设置给了我一个运行时错误 NoSuchMethodError

使用 API 1 中的重载 Path.addArc(RectF,float,float) 有一个简单的修复方法,但我的问题更多是关于如何进行编译而是时间错误或运行时。

[更新]

基本上,我想在将 API 21 作为目标 android 版本的同时保持对 API 15(最低 android 版本)的向后兼容性。当我尝试使用 API 15 以上的任何方法时,我想获得 IDE 支持。这意味着我需要一个警告,说明我使用的方法在定义的最低 android 版本中不存在,所以请进行运行时版本检查。

这可能吗?

最佳答案

要获得编译时警告,您需要将目标框架设置为您想要支持的最小 SDK。当您尝试使用更高级别的 api 时,这会给您带来错误。打开项目选项对话框。在此对话框中,单击“构建”>“常规”

您可以在此处阅读有关 api 级别的信息 https://developer.xamarin.com/guides/android/application_fundamentals/understanding_android_api_levels/#Target_Framework

如果您只想在保持目标框架不变的情况下出现错误,您可以修改您的 IDE 首选项以抛出编译时错误而不是警告。 enter image description here

关于android - 对于 android API 级别不一致,如何获取编译时错误而不是 NoSuchMethodError 运行时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507269/

相关文章:

android - 为什么无法在 android 的语音通话中播放音频文件

templates - 从模板 Haskell 代码生成最终代码

java - 在编译时未评估的接口(interface)中定义的最终静态字符串 - Android

android - Visual Studio Mac,已签名的 Android 版本早于当前版本

Xamarin Forms - PopToRootAsync 然后 PushAsync 不会触发

c# - 将项目转换为 Xamarin 统一 api : "Failed to load output manifest for actool for the file..."

parsing - 如何在 Nimrod 中编译时解析字符串?

android - 如何将图库中的图像上传到 ImageView 中?

android - 无法为 android 初始化 LoginButton Facebook-sdk

java - 如何将 Hashmap 数组从一个 Activity 发送到 Android 中的另一个 Activity