《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误相关的知识,希望能为你提供帮助。
http://blog.csdn.net/aqi00/article/details/72907534
http://blog.csdn.net/aqi00/article/details/73065392
【《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误】版权声明:本文为博主原创文章,未经博主允许不得转载。
  目录(?)[+]
  资源下载 下面是《android Studio开发实战 从零基础到App上线》一书用到的工具和代码资源:
1、本书使用的Android Studio版本为2.2.3,因为Android官网现在不提供该版本的下载,所以博主把该版本的64位安装包上传到了百度网盘,点击https://pan.baidu.com/s/1o80opRG进入下载页面。
如需32位的Android Studio安装包,可前往Android官网页面下载。
2、本书使用的Android NDK版本为r13b,64位NDK安装包的下载页面为https://pan.baidu.com/s/1qXZLMsG
如需32位的NDK安装包,可前往Android官网页面下载。
3、本书提供所有示例源码的demo工程下载,源码的下载页面为https://pan.baidu.com/s/1c1LXlKG,源码与各章的对应关系表见下图:

《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误

文章图片

4、本书第8章使用了一些反编译和重签名工具,这些工具的下载页面是https://pan.baidu.com/s/1kVRyLwj


内容说明一、关于Android Studio的版本
本书采用的Android Studio版本为当时最新的2.2.3,然后2017年3月份谷歌又推出了2.3版本,与2.2.3版本相比,2.3版在安装和使用上主要有两个差别:
1、Android Studio 2.3适配的Gradle版本为3.3,可是安装包自带的Gradle版本却是3.2,造成项目编译失败。为此,如果Android Studio升级到2.3版本,也需要同时把Gradle升级到3.3并做一系列的配置调整才行,具体操作步骤详见博文《Android Studio升级到2.3的编译问题解决办法》。
2、把编译好的工程导出apk安装包,弹出窗口的最后一页多了两个复选框“ V1 (Jar Signature)” 和“ V2 (Full APK Signature)” ,这里务必要勾选第一个“ V1 (Jar Signature)” ,具体原因参见博文《Android Studio 2.3的各种新增疑难杂症》。

二、关于JNI工程的编译问题
Android Studio 2.2之后增强了对NDK的编译支持,具体地说,是允许在编译配置build.gradle的android节点下增加externalNativeBuild节点,然后指定jni目录的mk编译文件;而之前版本只能在defaultConfig节点下补充ndk的编译说明。
在测试中发现,Android Studio 2.2采用defaultConfig方式编译jni工程,生成的App在Android 6.0上运行会闪退,日志报错“ java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memcpy" referenced by "***.so"” 。此时不管怎么修改build.gradle里面的ndk配置,可能都无法解决问题。
如果遇到这种情况,只能采用externalNativeBuild方式编译jni工程,即在jni目录下提供专门的Android.mk编译文件,由该mk文件配置jni文件的编译规则。

三、关于源码的文件格式问题
注意Android Studio对文件格式的校验要比Eclipse严格,如果把原来Eclipse工程的代码复制或者导入到Android Studio工程中,则很有可能发生编译失败的问题。原因是有部分文件的格式是“ UTF带BOM” ,由于Eclipse会自动处理因此在Eclipse上编译不会报错;但是Android Studio无法正确处理带BOM的文件,所以编译就报错了。此时需要使用UEStudio等文本编辑软件,把这些文件另存为“ UTF无BOM” 的格式才可以。
带BOM造成的编译问题主要影响下面两类文件:
1、.java文件,编译报错“ Error:(1, 1) 错误: 非法字符: ‘\ufeff‘” ;
2、.mk文件,无法正常编译jni代码;

四、关于部分控件的兼容性问题与新控件的介绍
Android的碎片化问题由来已久,每个版本对同一控件的处理不尽相同,经常导致某个控件在A版本上运行正常,在B版本上却运行异常。所以Android开发对控件进行兼容适配也是不小的工作量,限于篇幅,书中对部分控件的兼容性问题未做深入阐述。另外,Android自5.0之后引入了大量新控件,虽然书中已经对其中常用的新控件进行描述(包括Toolbar、TabLayout、RecyclerView、SwipeRefreshLayout、camera2、DrawerLayout、CardView、Palette等等),但是仍有许多新控件未能在有限的篇幅中加以介绍。此外,Android6.0之后引入了新的权限管理和休眠模式,也对部分功能的开发造成一定影响。
为了弥补缺憾,现在下面列出部分控件的兼容性问题说明,以及所有新控件的介绍:
1、对于RecyclerView的兼容性问题说明,可参见博文《RecyclerView的各种版本兼容问题处理集锦》。
2、对于选项菜单、上下文菜单、溢出菜单的兼容性问题说明,可参见博文《三种菜单控件的兼容性问题处理集锦》。
3、对于Android5.0之后新增的控件介绍,可参见博文《Android5.0和6.0之后新增的控件说明》中的索引。
4、对于Android6.0的权限管理和休眠模式造成的影响,可参见博文《Android6.0之后的权限机制对App开发的影响》。


勘误记录下面对书中的笔误之处进行更正说明:

1、第2页“ 1.1   Android Studio简介” 一节的第三段话中,
“ Android Studio当前的最新版本是2016年12月6日发布的2.2.3” ,这句话的本意是“ 本书使用的Android Studio为2016年12月6日发布的2.2.3版本” 。

2、第4页最后一行(“ 1.2.2   安装依赖的软件” 一节),
“ 腾讯Bugly,地址:android-mirror.bugly.qq.com,端口:8080” ,这行文字描述的地址已经失效,要换成另外一个地址,即改为“ mirrors.dormforce.net,端口:80”

3、第47页“ 2.4.2 状态列表图形” 一节的第三段,
“ 值为true表示按下时显示button_selected图像” ,此处的“ button_selected” 要改为“ button_pressed” 。

4、第48页“ 2.4.3 形状图形” 一节的“ 3.gradien” 段落,
“ gradien是shape的下级节点” ,这里的“ gradien” 末尾少了一个t,该段落里的几个“ gradien” 都要改为“ gradient” 。

5、第67页“ 3.2.3 单选按钮RadioButton” 一节常用方法的第一个,
“ setCheckedId:选中指定资源编号的单选按钮。” ,这里的“ setCheckedId” 要改为“ check” 。

6、第437页“ 11.4.1   上下滚动与左右滑动的冲突处理” 一节“ 2. 下级视图告诉滚动视图能否拦截手势” 段落的第二段话中,
“ Banner采用手势监听器就是重写监听器的onScroll方法” ,为准确表达,要改为“ 对于Banner采用手势监听器的情况,可重写监听器的onScroll方法” 。

7、第457页“ 12.1.3   淡入淡出动画” 一节,
表12-1中第五行的“ gradien” 要改为“ gradient” 。

8、第463页“ 12.2.2   补间动画的原理” 一节的倒数第二段,
“ 第一个参数为插值时间逝去的时间的百分比” ,这句话中间要加上“ ,即” ,也就是改为“ 第一个参数为插值时间,即逝去的时间所占的百分比” 。

9、第508页“ 13.2.3   影视播放器— — 爱看剧场” 一节“ 2. 定制MediaController的样式” 段落的第一段话中,
“ 因为媒体控制条的内部控件都是私有的,即使继承了也无法修改,因此只能自己写一个全新的视频控制条VideoController” ,这里使用了“ 由于… … ,因此… … ” 的句式,所以前面的“ 因为” 要改为“ 由于” 。

10、第514页“ 13.2.3   影视播放器— — 爱看剧场” 一节的中间一段话中,
“ 音量对话框的实现过程参见第9章” ,这里的“ 第9章” 要改为“ 第11章” 。因为自定义的音量对话框来源于“ 11.1.3 音量调节对话框” ,该节是在第11章,不是第9章。

11、第541页的“ 14.1.2   网页视图WebView” 一节的最后一段话中,
“ 但是套用固定的代码模板使用也不错” ,这里的“ 不错” 应改为“ 不难” 。

12、第591页“ 15.1.2   百度地图” 的开头一段话中,
“ 进行测量时。还要在地图上添加标记” ,这里的句号要改为逗号,即改为“ 进行测量时,还要在地图上添加标记” 。

13、第598页“ 15.2.2   微信分享” 的第一段话中,
“ 尽管微信与QQ虽然都是腾讯公司开发” ,这里的“ 尽管” 和“ 虽然” 表达重复了,要改为“ 尽管微信与QQ都是腾讯公司开发” 。

14、第639页“ 16.5.1   设计思路” 一节的第一段话中,
“ 如果在SK卡找到图片” ,这里的“ SK卡” 要改为“ SD卡” 。

 
1

    推荐阅读