今天一个朋友的软件在我的机子上出现了这个问题,就是没有了menu,成了全屏软件,再翻看以前一些同学的代码和网上所谓的教程,也存在同样的问题,是有必要写篇博客了,好进入正题。
如果开发的时候使用的4.x之前的SDk,请在写置android:targetSdkVersion=""的时候不要写4.x的版本,不管你是否需要menu这都不是一个很好的编程习惯,保持界面的一致性是每个开发者应该共同维护的事情。
这里说明一下android:targetSdkVersion的含义:
这里必须提到另外几个概念minSdkVersion、maxSdkVersion
minSdkVersion与maxSdkVersion比较容易理解,就是在安装程序的时候,如果目标设备的API版本小于minSdkVersion,或者大于maxSdkVersion,程序将无法安装(这一点必须注意,如果你的程序希望给2.1用,而且没有用高级的api,请设定尽量低的版本)。一般来说没有必要设置maxSdkVersion,android自身平台具有向下兼容性。
targetSdkVersion相对复杂一些,如果设置了此属性,那么在程序执行时,如果目标设备的API版本正好等于此数值,他会告诉Android平台:此程序在此版本已经经过充分测,没有问题。不必为此程序开启兼容性检查判断的工作了。也就是说,如果targetSdkVersion与目标设备的API版本相同时,运行效率可能会高一些。这里就出现了刚才的问题,如果你为低版本的sdk软件设置了高版本的target,号称适应4.x,系统自然不会帮你检查兼容性,4.x取消了屏幕下方的menu键,也就出现了这个问题。所以要注意,target不是说你能支持的版本,是你的目标版本。新的adt建议设置target,又是指最高版本,google会去发布这个规定吗,所以还是需要多去理解,不能生硬看api才能更多的从android开发中学到东西,android给了我们个人或小团队开发者一个做真正有用产品的机会。
这也带来了另一个必须说的问题,就是比如说,使用了targetSdkVersion这个SDK版本中的一个特性,但是这个特性在低版本中是不支持的,那么在低版本的API设备上运行程序时,可能会报错:java.lang.VerifyError,我今天也刚刚遇到用户反馈的这个问题,现在通过具体了解这个问题也有了更加清晰的认识。这个错误也就是说,此属性不会帮你解决兼容性的测试问题。因此你至少需要在minSdkVersion这个版本上将程序完整的跑一遍来确定兼容性是没有问题的。
在default.properties中的target是指在编译的时候使用哪个版本的API进行编译。
再吐槽几句吧,如果希望开发Android平台,请不要抱怨分辨率,不要抱怨机型,为你的用户定做最合适的产品是你的义务。
另一方面说,如果我们试着去习惯4.x的设计和编码理念,就会减少很多这方面的困扰,google给了我们很多解决方案,我们应该试着去习惯,而不是做一个2.x的开发者,虽然我们的用户大都是2.x的版本,但是理念总归需要先进一点的,开放,共同学习,这才是android。
最后补充官方文档的一些解释:
(1)targetsdkversion即其以上的版本将使用新的功能(os new api),但对低版本的需要进行code支持,即文章【1】写到的使用反射(reflection)的技术对老版本使用的一些api功能进行支持,否则会出现老版本上崩溃的现象;
(2)使用最新的开发平台开发,并设置其对应的targetsdkversion;发布的时候,需要从min到target上均需要进行测试;
(3)文章【2】提到了最大兼容性的问题,体现到两个方面:device feature support(新的属性), 和OS version support(新的api)。当进入新的开发平台时,为了使应用程序最大兼容性,可以对用不到新平台支持的一些特性进行选择设置,使得老版本(不被Market过滤掉)可以安装使用.
(4)minSDKVersion是向后(老版本)兼容,targetSDKVersion是向前兼容。
分享到:
相关推荐
- **Android SDK API Level 14**:即Android 4.0对应的API级别,通过链接`android-14_r01.zip`下载,并解压后将文件夹放入`platforms`目录内。 - **Android 4.0 System Image**:这是模拟器所需的系统镜像文件,...
【第一部分】历史文章: ...Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
在Android 4.0(代号Ice Cream Sandwich,简称ICS)时代,测试代码的重要性得到了显著提升,因为这个版本引入了许多新特性和优化,为开发者带来了更丰富的功能和更好的用户体验。以下是一些关于Android 4.0测试代码...
在Android开发领域,Android 4.0(Ice Cream Sandwich,简称ICS)是一个重要的里程碑,它引入了许多新特性和设计风格,极大地提升了用户体验。本话题主要关注如何在MTK6515/6575/6626平台上实现一个仿Android 4.0的...
Holo主题中的组件包括动作栏(Action Bar)、列表视图(ListView)、网格视图(GridView)、选项菜单(OptionsMenu)、对话框(Dialogs)、滑动抽屉(Sliding Drawers)等,这些都是Android 4.0组件库中不可或缺的...
### Android 4.0 ActionBar API 知识点详解 #### 一、ActionBar 概述 在 Android 4.0 版本中引入了一个新的组件叫做 ActionBar,它替代了早期 Android 版本中常见的传统标题栏(title bar)。ActionBar 的位置位于...
在Android应用开发中,菜单(Menu)是用户交互的重要组成部分,通常用于展示应用程序的主要操作选项。在Android 4.0(API级别14)及更高版本中,开发者可能会遇到一个常见问题:为菜单项设置的图标(Icon)无法正常...
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11"/> ``` 这段代码表示应用的最小 API 版本号为 4 (Android 1.6),目标 API 版本号为 11 (Android 3.0)。当此应用在运行 Android 3.0 或更高...
在Android开发中,Activity是应用程序的基本构建块,它负责与用户进行交互。在这个主题中,我们将深入探讨如何在一个Activity中运用Android 4.0(Ice Cream Sandwich)引入的新控件,提升用户界面的设计和功能。这些...
在本教程中,我们将深入探讨如何在Android中实现一个关于程序的信息页面,以及如何设计和使用`Menu`功能。 首先,我们来理解`Menu`在Android中的作用。`Menu`是Android UI设计的一部分,它允许开发者在屏幕的顶部或...
在Android系统中,广播接收器(BroadcastReceiver)是四大组件之一,它允许应用程序接收和响应系统或自定义广播事件。标题“android 4.0接收开机广播”涉及到的就是如何在Android 4.0版本上创建一个能监听并响应设备...
Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数SharedPreferences) Android学习笔记...
在Android应用开发中,Menu是用户界面中的一个重要组成部分,它提供了在特定屏幕或操作上下文之外展示更多选项的途径。本教程将深入探讨如何在Android系统中创建和使用单选菜单(Radio Menu)。 首先,单选菜单通常...
在Android应用开发中,菜单(Menu)是用户交互的重要组成部分,它提供了一种向用户展示功能选项的方式。在本文中,我们将深入探讨Android初级入门时如何简单地使用菜单Menu。 首先,菜单在Android中的主要用途是为...
在Android应用开发中,ActionBar是一个至关重要的组件,它位于应用程序界面的顶部,为用户提供了一种与应用交互的方式。"Android4.0_ActionBar_API经典教材 (1).pdf" 是一本专注于讲解这一组件的教程,旨在帮助...
总的来说,这份名为"安卓Android源码——menu.rar"的压缩包为深入理解Android Menu的实现提供了宝贵的资源,通过学习和分析这些源码,开发者可以提升对Android系统的理解,从而编写出更加高效和健壮的应用程序。
2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...
在Android应用开发中,Menu通常指的是应用程序中的选项菜单,用于提供用户操作的多种选择。MenuSample可能是开发者为了教学或演示如何在Android应用中创建和使用菜单而编写的示例代码。 【描述解析】 描述中的"安卓...
2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示...
### Android各组件详解—Menu #### 一、Menu概述与分类 在Android应用程序开发中,Menu(菜单)是一项重要的UI组件,它可以帮助用户快速访问应用内的功能或设置。根据应用场景的不同,Android系统提供了三种类型的...