《Android编程权威指南》之Android SDK版本与兼容

2018-02-27 11:30:18来源:https://www.jianshu.com/p/3cc8216c19b1作者:夜远曦白人点击

分享


继续写完整本书的总结,马上就要过年了,欧耶!


Android SDK 版本

(运行指定 Android 平台版本的相对数量设备的相关数据)





截图取自官网 https://developer.android.com/about/dashboards/index.html

每一个有发布代号的版本随后都会有相应的增量版本。上图是目前从官网截取到的数据(地址图下有)。


Android 编程与兼容性问题

这么多版本,此小结主要在讲兼容性问题,看上小结的图,目前Android平台版本的分配情况,开发也不用兼容最原始的版本,毕竟使用比例小,减少点开发兼容难度。看图来说兼容到4.4差不多已经是很兼容的版本了。


打开项目模块下的build.gralde,可以看到compileSdkVersion 、minSdkVersion 和 targetSdkVersion




截图取自demo

SDK最低版本
以最低版本设置值为标准,操作系统会拒绝将应用安装在系统版本低于标准的设备上。
SDK 目标版本
一般情况,目标版本即最新发布的Android版本,为了告知Android,应用是为哪个API级别设计的。
SDK 编译版本
SDK最低版本和目标版本会通知给操作系统,而SDK编译版本只是你和编译器之间的私有信息。它不会出现在manifest配置文件里。编译目标的最佳选择为最新的API级别。
安全添加新版本 API 中的代码
由于一般应用的SDK最低版本和编译版本间的差异较大,如果是在老版本的系统上,调用了新版本的代码,那应用就会崩溃。
可是现在有了Android Lint,就能检测出这种潜在的问题,它会在这种潜在问题上提示类似Call requires API level 21 (Current min is 19)的警告信息。
解决问题的方法可以提升SDK最低版本,可这只是回避了兼容性问题,书中推荐的方法是,将高API级别代码置于检查Android设备版本的条件语句中。
比如:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
...
}

Build.VERSION.SDK_INT常量代表了Android设备的版本号。版本号清单——https://developer.android.com/reference/android/os/Build.VERSION_CODES.html
小结中demo例子用的是ViewAnimationUtils类和它的createCircularReveal,这是Android到SDK API 21级才加入的方法,现在动画特效代码只有在API 21级或更高版本的设备上运行应用才会被调用。


使用 Android 开发者文档

学会多查看文档,文档主页——http://developer.android.com/


文档主要分为三大部分:


设计——包括应用UI设计的模式和原则。
开发——包括SDK文档和培训资料。
Android培训:初级和中级开发者的培训模块,包括可下载的示例代码。
API使用指南:基于主题的应用组件、特色功能详述以及它们的最佳实践。
参考文档:SDK中类、方法、接口、属性常量等可搜索、交叉链接的参考文档。
示例代码:如何使用各种API的示例代码。
Android Studio:与Android Studio IDE相关的内容。
Android NDK:有关Android原生开发工具的介绍和参考链接,该工具允许开发人员使用C或C++开发应用。
Google服务:Google专属API的相关信息,包括Google地图和Google云消息。

发布——讲述如何在Google Play商店里或以开放发布模式准备并发布
应用。

SDK安装文件所在目录下的docs目录也包含了全部的Android开发者文档内容。


挑战练习:报告编译版本

XML文件中添加个TextView这个组件,代码就不贴了吧,显示当前设备运行系统的API级别:


tvCompileVersion.setText("API Lever " + Build.VERSION.SDK_INT);

再一些XML属性调整文本的尺寸或样式,就一个个尝试吧。


挑战练习:限制作弊次数

(允许用户最多作弊3次。记录用户偷看答案的次数,在CHEAT按钮下显示剩余次数。超出后,禁用偷看按钮。)


先把布局写好,多个Textview显示偷看答案剩余次数,记得在横屏里面的布局加上,不然横屏的时候会报空指针奔溃
我的解决方案是写了个检查偷看次数的方法,有个返回值,返回的是剩余的次数,这个返回值在checkAnswer判断的时候有用到,那个方法的判断变一下,判断当前偷看次数为0的时候,就提示用户,偷看答案是不对的做法。偷看次数的方法里面做的事是循环当然偷看哪些问题偷看过答案,拿着count记录,一旦count达到3,则禁用偷看按钮并退出循环,循环后面做的事是给textview更新文字,此方法分别在onCreate()以及onActivityResult()判断偷看了答案成功的时候调用一次。
private int checkCheatCount() {
int usedCheatCount = 0;
for (int i = 0; i < mQuestionBank.length; i++) {
if (isQuestionsCheater[i]) {
usedCheatCount++;
if (usedCheatCount == 3) {
btnCheat.setEnabled(false);
break;
}
}
}
int reCount = mCheatCount - usedCheatCount;
tvCheatCount.setText("还剩下 " + reCount + " 次偷看答案机会");
return reCount;
}

我想,应该还有其他解决方案,暂时我的解决方案就是如此了。目前感觉还行,没啥问题。


GeoQuiz 项目完成了,后面开始学习其他项目了,引出其他的知识点,代码地址:
https://github.com/visiongem/GuideApplication








最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台