突破第三方库的 minSdkVersion 限制 | Tips

电脑杂谈  发布时间:2019-10-05 04:05:04  来源:网络整理

minsdkversion为1_minsdkversion 18_minsdkversion修改

在 Android 提供的 Api 中,很多 Api 都是有 Api Level 的限制的,这也限制了我们的 App 允许运行的设施的 Api Level ,通常这些限制,我们可以使用 minSdkVersion 来做限定。

关于 minSdkVersion 的相关内容,可以参考之前的文章:《》

而当我们使用第三方库的之后,也会遇到由于别人库限定了 minSdkVersion 而造成难以被集成进来,这种状况会在编译之后抛出异常,导致打包失败。

遇见这种的难题,只能考量提升主项目的 minSdkVersion ,放弃低版本用户,或者放弃使用该库。这两种方案二选一。

minsdkversion为1_minsdkversion修改_minsdkversion 18

那么本片文章,教你怎么突破它,允许忽视第三方库的 minSdkVersion 限制,成功打包。

既然是解决难题,先来说说错误提醒。

场景:集成了 Android TV 的库android.support.v17.leanback。可以看见,它限制了 minSdkVersion 为 Api Level 17 。如果我们在 build.gradle 中的 minSdkVersion 设置到 16,重新打包就会发生如下错误。

突破第三方库的 minSdkVersion 限制 | Tips突破第三方库的 minSdkVersion 限制 | Tips

minsdkversion为1_minsdkversion 18_minsdkversion修改

从提示上,可以很明白的看起来是那种库导致的难题,也给出了缓解方法,使用 uses-sdk 标签标记它。

既然早已给出了提醒,那么根据提示解决即可。

在 AndroidManifest.xml 中,Application 标签下,增加一个 uses-sdk 的标签,重新为 leanback 指定 minSdkVersion 为 16。

突破第三方库的 minSdkVersion 限制 | Tips突破第三方库的 minSdkVersion 限制 | Tips

minsdkversion 18_minsdkversion修改_minsdkversion为1

如此设定以后,就可以正常打包了。

虽然这种可以解决引用高 minSdkVersion 库的打包问题minsdkversion为1,但是实际上并不推荐这么操作。

同时上面给出的事例并不是一个好例证,因为 Leanback 中,需要使用 Fragment.getChildFragmentManager() 这个 Api,但是它是在 Api 17 才添加的,这种难题,是显著无法绕开的弊端,因为哪怕打包失败了,安装运行期间一样会崩溃报错。

但是详细状况具体剖析。有一些状况,实际上我们是可以绕过的。最典型的就是一些 UI 效果,如果低版本不支持,直接使用 Build.VERSION.SDK_INT 判断一下当前运行的设备 SDK 版本,然后区别处理就能。这样实际上在低版本的设备上运行minsdkversion为1,那些高版本才添加的 Api,也不会被调用到,自然也不会出错。无非就是在低版本上,表现的方式不一样而已,例如少个,但是并不影响使用。

minsdkversion为1_minsdkversion 18_minsdkversion修改

所以小结来说,这样 user-sdk 的使用场景:

能明白清楚是哪个 Api 被版本限制了,又能明白的了解怎么应对它,让它在低版本上不会被调用到。

这样的状况下,我们是可以放心的使用 uses-sdk 来减少无法打包的弊端的,毕竟低版本的设备,现在行业占用率,并不低。

iOS 专属打赏


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-125182-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...