在Android中开源类库使用过程中兼容性等问题的讨论

简介:

1、在Android4.0环境下编译的actionbarsherlockslidingmenu类库,能不能在4.0以下的版本中使用

imageimage

相信很多人跟我一样,都以为在低版本(如Android2.1或2.3版本)编译的应用能够在高版本中运行,但高版本(比如Android3.0或4.0)中编译的应用恐怕就不能在低版本中运行。于是,我们可能就会想方设法地把一些在高版本中编译的代码,改成在低版本的Android SDK中编译,以便兼容。我们一直忽视了在<manifest>文件中关于兼容性的声明,如下面代码段。

<uses-sdk 
android:minSdkVersion="integer"           
android:targetSdkVersion="integer"           
android:maxSdkVersion="integer"
/>

android:minSdkVersion就声明了应用可以运行在最小的什么API版本之上。我们如何知道,一个应用可以运行在什么API上面呢?常查Android Reference(API文档)的同学,应该对下面这幅图很熟悉。

image

在API Reference中不仅说明了你调用的函数的功能,也说明了它是在什么版本API中引入的(见红框处)。从而我们需要检查一下自己应用中的系统调用函数的是在什么版本的API中引入的。

image

                     slidingmenu的兼容性声明

image

                   actionbarsherlock的兼容性声明

上面两幅图分别是slidingmenu、actionbarsherlock的兼容性说明。如果我们只使用slidingmenu,那么我们的应用里面的兼容性说明的android:minSdkVersion只要大于5就行了,如果同时使用slidingmenu、actionbarsherlock,那么android:minSdkVersion就必须至少是7。

对于Android高版本中引入的SDK,一般google都会推出相应的兼容包。比如在Android3.0才推出的Fragment相关API,在android-support-v4这个兼容包中就有对应的兼容API,详见创建Fragment

最后,做一个结论,在高版本的环境下(如Android4.0)编译的应用能不能在低版本的Android系统中运行不是看编译的SDK版本,而是取决于android:minSdkVersion这个最小API版本声明。

当然,你不能声明了android:minSdkVersion是5,结果在引用中使用了android:minSdkVersion为11才引入的API。

 

2、遇到“IllegalStateException: Both setBehindContentView must be called in onCreate in addition to setContentView.”错误

 

这个错误是在一启动,还没见到界面的时候,就爆出的错误。这是因为在代码中,缺少 setBehindContentView(R.layout.menu_frame)。而这个函数主要就是用来决定侧边栏长什么样的。

public class BaseActivity extends SlidingFragmentActivity

而这又是因为我的Activity继承了SlidingFragmentActivity(见下面代码段),这个特殊的Activity本身就带有侧边栏,因此必须在OnCreate函数那里就调用setBehindContentView()函数来设置侧边栏的样式。

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/3450800.html如需转载请自行联系原作者

kissazi2
相关文章
|
5天前
|
存储 开发工具 Android开发
Android系统 权限组管理和兼容性
Android系统 权限组管理和兼容性
14 0
|
15天前
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
|
Android开发 开发者
Android 64 bit的一些兼容性分析
Android 64 bit系统的一些兼容性分析 0x0:前言 Android L之后android开始了支持64bit的系统,现在64位的手机越来越多,基本上现在出的新机都是64位的了,所以64位将会是一个趋势,但是对于对于开发者来说,64位android你真的了解么?64位系统是如何无缝兼容32位app的? 0x1:32位兼容分析 *首先在init.
36529 0
|
传感器 Android开发
Android--设备兼容性1
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78144241 Device Compatibility 设备兼容性 文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多干货资源。
949 0
|
传感器 Android开发
Android设备兼容性 2
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78144278 文章最早发布于我的微信公众号中,欢迎大家扫描下面二维码关注微信公众获取更多干货资源。
966 0
mqc
|
存储 编解码 Linux
Android的兼容性问题剖析
PC是X86构架,主要生产厂是Inter和AMD,android智能手机基本上都是ARM构架,主要生产厂家有高通、三星、NVIDIA等,也不是很多,所以架构方面应该不是导致碎片化的主要原因才是啊?或许我理解的问题?架构方面是一个重要原因。
mqc
4177 0
mqc
|
API Android开发
Android API兼容性栗子
Android 版本更替,新的版本带来新的特性,新的方法。 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash。 本文以一个具体的例子说明如何在使用高API level的方法时处理好兼容性问题。
mqc
3641 0