Android 如何预防;调用需要API级别“;来自第三方库 应用程序代码
当我们在Android应用程序中使用min版本SDK中不存在的某些代码时,Android Studio将显示一个错误 示例: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
假设我的应用程序有目标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删除所有未使用的代码后,这些检查没有对最终字节代码进行。。