Android 如何预防;调用需要API级别“;来自第三方库 应用程序代码

Android 如何预防;调用需要API级别“;来自第三方库 应用程序代码,android,android-proguard,android-studio-3.0,Android,Android Proguard,Android Studio 3.0,当我们在Android应用程序中使用min版本SDK中不存在的某些代码时,Android Studio将显示一个错误 示例: 假设我的应用程序有目标SDK 26和最小SDK 21,我的代码尝试调用Objects.isNull(var):然后我们会收到一条很好的错误消息: Call requires API level 24 (current min is 21): java.util.Objects#isNull AFAIK这是一条消息(不是编译器警告或错误) 第三方代码 我们如何对第三方ja

当我们在Android应用程序中使用min版本SDK中不存在的某些代码时,Android Studio将显示一个错误

示例
假设我的应用程序有目标SDK 26和最小SDK 21,我的代码尝试调用
Objects.isNull(var):然后我们会收到一条很好的错误消息:

Call requires API level 24 (current min is 21): java.util.Objects#isNull
AFAIK这是一条消息(不是编译器警告或错误)

第三方代码 我们如何对第三方java库进行同样的检查

示例
当项目依赖于
lib.jar
文件且该库内部使用
Objects.isNull
时,我们不会收到任何错误/警告,应用程序将在旧设备上崩溃

避免这种情况的一种方法是使用——但是这些测试速度很慢,而且您永远不会拥有100%的代码覆盖率

e、 g.我实际上认为,ProGuard应该报告这个问题。但事实并非如此。
可能是因为它使用的是目标Android SDK min SDK

因此,在以下两种情况下,我们可以做些什么:

  • 我们必须按原样使用第三方库
  • 我们可以分叉第三方库并使用此分叉:我们可以做些什么来发现/避免这些错误:例如,我们应该将其转换为aar吗
  • 我们如何对第三方java库进行同样的检查

    将源代码添加到项目中

    我们必须按原样使用第三方库

    询问其开发人员库的相关
    minSdkVersion
    是什么,然后将您的设置为匹配,或者避免在旧设备上调用他们的库

    我们可以分叉第三方库并使用此分叉:我们可以做些什么来发现/避免这些错误:例如,我们应该将其转换为aar吗


    将源代码添加到项目中。或者,使用源代码创建其他项目。Lint检查源代码,而不是编译代码。如果您使用源代码创建其他项目,则需要让它编译一个JAR或AAR,并使其可用于主项目。

    太糟糕了,在ProGuard删除所有未使用的代码后,这些检查没有对最终字节代码进行。。