在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
相关文章
|
XML Android开发 数据安全/隐私保护
Android 自定义开源库 EasyView
Android 自定义开源库 EasyView
179 0
|
2月前
|
编解码 Java Android开发
安卓虚拟摄像头免root版,虚拟摄像头替换真实摄像头,jar代码开源分享
通过动态替换摄像头输入流的方式实现虚拟摄像头功能,代码经过简化展示核心逻辑。实际开发中还需要考虑视频编解码优化
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
921 1
|
存储 API 开发工具
kotlin安卓开发,如何获取设备的唯一id, 有哪些开源库
在Kotlin的Android开发中,获取设备唯一ID的方法包括不稳定的ANDROID_ID、需要权限的IMEI、使用UUID与SharedPreference结合,以及考虑隐私的Firebase Installations ID和Advertising ID。由于隐私问题和Google Play政策,IMEI和ANDROID_ID不推荐作为长期唯一标识。推荐使用UUID(首次安装时生成并存储),或在涉及广告时使用Advertising ID(需用户同意),而Firebase Installations ID则提供了一种合规的设备标识选项。在选择方法时,必须遵守隐私指南和政策。
1186 0
|
编解码 人工智能 测试技术
安卓适配性策略:确保应用在不同设备上的兼容性
【4月更文挑战第13天】本文探讨了提升安卓应用兼容性的策略,包括理解平台碎片化、设计响应式UI(使用dp单位,考虑横竖屏)、利用Android SDK的兼容工具(支持库、资源限定符)、编写兼容性代码(运行时权限、设备特性检查)以及优化性能以适应低端设备。适配性是安卓开发的关键,通过这些方法可确保应用在多样化设备上提供一致体验。未来,自动化测试和AI将助力应对设备碎片化挑战。
1519 4
|
存储 开发工具 Android开发
Android系统 权限组管理和兼容性
Android系统 权限组管理和兼容性
314 0
|
小程序 JavaScript API
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
494 0
|
存储 缓存 Java
Android开源库,您懂多少?
github地址(持续更新欢迎star):https://github.com/zsml2016/GitHubNotes
Android开源库,您懂多少?
|
API 开发工具 Android开发
Android 发布开源库到 JitPack (详细步骤)
Android 发布开源库到 JitPack (详细步骤)
543 0
Android 发布开源库到 JitPack (详细步骤)
|
Android开发
Android图片加载开源库对比
Android图片加载开源库对比
232 0

热门文章

最新文章