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

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

Android SDK 版本

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


《Android编程权威指南》之Android SDK版本与兼容_第1张图片
截图取自官网 https://developer.android.com/about/dashboards/index.html

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

Android 编程与兼容性问题

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

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

《Android编程权威指南》之Android SDK版本与兼容_第2张图片
截图取自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

你可能感兴趣的:(《Android编程权威指南》之Android SDK版本与兼容)