大家好,又见面了,我是你们的朋友全栈君。
资源下载
下面是《Android Studio开发实战 从零基础到App上线(第2版)》一书用到的工具和代码资源:
1、本书使用的Android Studio版本为3.2,最新的安装包可前往Android官网页面下载。
2、本书使用的Android NDK版本为r17,最新的安装包可前往Android官网页面下载。
3、本书提供所有示例源码的demo工程下载,源码(适配Android4.1到9.0和Android Studio 3.2到3.4)的下载页面为https://pan.baidu.com/s/14NE2DD-frXxuDXUAlTfRaw。最新的源码也可访问我的github获取,github地址是https://github.com/aqi00/android2,服务端的github地址是https://github.com/aqi00/net_server。(部分地区如新疆既访问不了百度网盘也访问不了github,此时可访问csdn的下载页面获取源码https://download.csdn.net/download/aqi00/11223223)。另外,AS3.4之后默认开了androidx,如需获取适配了androidx的本书源码,可访问这个github页面https://github.com/aqi00/androidx。
有的读者反映从github下载本书源码很慢,或者下载不完整,这是国外服务器连接不稳定造成的。建议访问这个代下载网站https://d.serctl.com/,按照网站左上角的“如何下载教程”,找到本书源码的github下载地址并提交,等待几秒后就能在该网站下载完整的源码了。
源码与各章的对应关系表见下图:
4、本书提供配套的ppt课件下载,第二版课件的下载页面为https://www.jianguoyun.com/p/DX7Y1J4QlP6kCBiUoIkD
5、本书第8章使用了一些反编译和重签名工具,这些工具的下载页面是https://pan.baidu.com/s/1EzDMLNdTdh2pDO7NBMiiww (提取码93i5)
参考资料
1、学习本书需要具备Java基础,所谓“零基础”指的是安卓零基础,如果您没学过Java的话,可学习以下系列的Java教程《Java开发笔记》。
2、由于篇幅所限,本书只覆盖了较为常见的Android开发技术,其余的Android开发技术可参考以下的Android笔记《Android开发笔记》。
3、本书的技术实现采用的是Java编码,若您想进一步了解App开发中的Kotlin编程技术,可阅读以下系列的Kotlin教程《Kotlin入门教程》。
4、更多有关本书内容的常见问题参见博文《Android Studio开发实战 从零基础到App上线(第2版)》常见问题解答。
5、有关Android8、Android9、Android10的更多代码适配参见博文《Android8.0、9.0、10.0的新特性兼容适配代码修改》。
勘误记录
下面对书中的笔误之处进行更正说明:
一、第一批勘误记录(以下的勘误记录在2019年1月的第二次印刷时均已修正):
1、第1页“1.1 Android Studio简介”
该小节第三段第三行“本书使用的Android Studio为2018年4月发布的3.1.2版本”,这里的“4月”改为“9月”,“3.1.2版本”改为“3.2版本”。
2、第428页“10.2.4 HTTP接口访问”
倒数第四行的connect方法,该行后面的“该方法在getOutputStream后调用,在getInputStream前调用。”整个删掉。因为connect方法和getOutputStream方法没有先后调用关系,getOutputStream方法内部会自动调用connect方法。
3、第430页“1. URL串中对汉字的转义处理”
在“具体的转义代码参见本书下载资源的URLtoUTF8.java”这句后面补充“,也可使用系统自带的java.net.URLEncoder和java.net.URLDecoder”。
4、第451页“10.5.1 设计思路”下面的第三行
“于是在打开系统自带的应用宝”,这句前半部分的“在”字删掉。
5、第675页“2. 蓝牙设备BluetoothDevice”
表14-6出现了两个BOND_BONDING,要把后面的“BOND_BONDING”改为“BOND_BONDED”。
二、第二批勘误记录(以下的勘误记录在2019年6月的第四次印刷时均已修正):
1、第46页“2.4.1 图形Drawable”
该页中间“开发者拿到一张图片”这段的第二行中“Android Postfix Completion”要改为“Android Drawable Importer”。
2、第447页的“10.4.2 Socket通信”
在“1. Socket”该段下面的方法说明中,“getOutputStream:获取输入流”,这里的“输入流”要改为“输出流”。
3、第650页“14.1.2 网页视图WebView”
该页代码的倒数第七行,把“http://”改为“https://”,也就是添加字母s。
4、第654页“14.1.3 简单浏览器”
该页代码的倒数第八行,把“http://”改为“https://”,也就是添加字母s。
三、第三批勘误记录(以下的勘误记录在2019年11月的第六次印刷时均已修正):
1、第94页的图3-31,最后一行“2012年07月06日 五年期商贷利率”的数值改为 “6.55%”,原来的6.15%跟2014年的商贷利率重复了。
2、第271页的“7.4.1 循环视图RecyclerView”
该小节第二段第一行的“为了兼容以前的Adnroid版本”,这里的Adnroid拼错了,要改为Android。
3、第409页的“10.1.1 消息传递Message”
第6行的注释“// 从布局文件中获取名叫tv_control的文本视图”,这里的“tv_control”改为“tv_message”
4、第410页的“10.1.1 消息传递Message”
代码倒数第10行的“下面播放新闻”,这里的“下面”改为“开始”。
四、第四批勘误记录(以下的勘误记录在2020年4月的第八次印刷时均已修正):
1、第225页的“6.5.1 Service的生命周期”
该节第一段第三行在“App也可以有自己的服务。”后面补充以下红字部分:
App也可以有自己的服务。此时需要在AndroidManifest.xml中添加新服务的Service节点配置,比如:
<service android:name=”.service.NormalService” />
2、第353页的表9-6
该表最后两行的说明都是“高效率的高级编码”,需要把最后一行AAC_ELD的说明改为“增强型低延时的高级编码”。
3、第430页的“10.2.4 HTTP接口调用”
该页中间在“下面用一个阶段性的实战小项目练练手”这句前面补充以下红字部分:
除此之外,从Android9开始默认只能访问以https打头的安全地址,不能直接访问http打头的网络地址。如果应用仍想访问以http开头的普通地址,就得修改AndroidManifest.xml,给application节点添加如下属性,表示继续使用HTTP明文地址:
android:usesCleartextTraffic=”true”
下面用一个阶段性的实战小项目练练手
五、第五批勘误记录(以下的勘误记录在2020年9月的第九次印刷时均已修正):
1、第21页的“1.5.5 新建一个Activity页面”
该页第一段在“在res\layout下面生成页面布局activity_main2.xml”后面补充以下红字部分:
在res\layout下面生成页面布局activity_main2.xml,还会在AndroidManifest.xml的application节点增加下面一行配置:
<activity android:name=”.Main2Activity”></activity>
新页面创建之后的工程结构如图1-37所示。
2、第52页的“2.4.4 九宫格图片”
图2-26下面说明文字的第二行,“未拉伸预览”改为“两方向同时拉伸预览”
3、第66页的“3.2.2 开关按钮Switch”
表3-2,倒数第二行thumb的说明列改为“设置开关标识的图标”,倒数第一行track的说明列改为“设置开关轨道的背景”,也就是倒数两行的说明文字互换
4、第72页的“3.4.1 文本编辑框EditText”
表3-3,第三行textPassword和第七行numberPassword两行右边的说明列,“星号“*””改为“圆点“•””
5、第83页的“3.5.2 使用Intent传递消息”
表3-5的第六行第三列的“数据类型,用于指定Data类型的定义”,这里的表达比较拗口不易理解,要把“Data类型的定义”改为“消息的数据类型”
6、第88页的“3.5.4 向上一个Activity返回参数”
第一段第三行的“如果还要处理一下个页面的应答数据”,这里的“一下个页面”改为“下一个页面”
7、第171页的“5.4.2 动态注册/碎片适配器FragmentStatePagerAdapter”
该页第一行“然后在Fragment的onCreateView函数中调用getArguments方获得请求数据”,这里的“getArguments方”改为“getArguments方法”,也就是添加“法”字。
8、第214页的“6.4.1 通知推送Notification”
参数构建方法的第三个方法setUsesChronometer,把“设置是否显示计数器”里面的“计数器”改为“计时器”。
9、第237页的“7.1.1 标签按钮”
该页第二行的“读者还记得第2章”,这里的“第2章”改为“第3章”
10、第663页的“14.2.2 创建JNI接口”
“具体的编译配置修改说明如下”这句后面的代码有若干处需要修改,修改之处见下面的红字:
android {
compileSdkVersion 28
buildToolsVersion “28.0.3″
defaultConfig {
applicationId “com.example.mixture”
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName “1.0”
// 此处说明mk文件未能指定的编译参数
externalNativeBuild {
ndkBuild {
// 说明需要生成哪些处理器的so文件
// NDK的r17版本开始不再支持ARM5(armeabi)、MIPS、MIPS64这几种类型
abiFilters “arm64-v8a”, “armeabi-v7a”
// 指定C++编译器的版本,比如下面这行用的是C++11
//cppFlags “-std=c++11”
}
}
}
// 下面指定拾取的第一个so库路径,编译时才不会重复链接
packagingOptions {
pickFirst ‘lib/arm64-v8a/libjni_mix.so’
pickFirst ‘lib/armeabi-v7a/libjni_mix.so’
pickFirst ‘lib/arm64-v8a/libvudroid.so’
pickFirst ‘lib/armeabi-v7a/libvudroid.so’
}
// Android Studio 2.2之后才引入externalNativeBuild。此处指定mk文件的路径
externalNativeBuild {
ndkBuild {
// 下面是编译CPU信息、加解密、获取主机名专用的mk文件
path “src/main/jni/Android.mk”
//path file(“src\\main\\jni\\Android.mk”)
}
}
}
六、第六批勘误记录(以下的勘误记录在2021年2月的第十次印刷时均已修正):
1、第35页的“2.2.3 滚动视图ScrollView”
该小节示例代码中的两处“线性视图”都改为“线性布局”。
2、第97页的“3.7.2 小知识:提醒对话框AlertDialog”
该小节示例代码第七行的“给建造器设置对话框的信息文本”,把“信息文本”改为“内容文本”。
3、第195页的““6.1.1 声明属性””
表6-1删掉第七行整行(getDimension那行),同时第八行(getDimensionPixelSize那行)的说明列文字改为“尺寸值。单位为px”。
4、第204页的“6.1.5 绘制视图”
在“2. onDraw”的“(1)划定可绘制的区域”下的第一句“虽然本视图内的所有区域都是可以绘制的”,改为“虽然视图内的所有区域都是可以绘制的”,也就是去掉“本”字
5、第233页的“6.5.1 Service的生命周期”
“3. 延迟绑定”小节的第二行,把“因为启动操作在先”改为“因为启动操作在先、绑定操作在后”,也就是补充“、绑定操作在后”这几个字。
6、第335页的“9.2.3 录音与播音”
“1. 媒体录制器MediaRecorder”小节的常用方法列表中,第一行reset后面的文字说明“重置录制资源”改为“重置录制器”,第五行release后面的的文字说明“释放录制资源”改为“释放录制器”。
七、第七批勘误记录:
1、第55页“2.5.2 小知识:日志Log/提示Toast”开始
“2.5.2 小知识:日志Log/提示Toast”和“2.5.3 代码示例”这两个小节共有七处“被除数”要改为“除数”,因为除法运算要检查除数是否为零,而不是检查被除数是否为零。
2、第114页的“4.3.1 SD卡的基本操作”
第三行“<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAG” />”改为“<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE” />”,也就是在STORAG末尾加个E变成STORAGE
3、第136页的“4.6.3 代码示例”
该页中间“声明SD卡的操作权限”下面第三行“<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAG” />”改为“<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE” />”,也就是在STORAG末尾加个E变成STORAGE
4、第232页的“6.6.2 小知识:应用包管理器PackageManager”
该小节开始的代码例子第9行的“PackageManager.PERMISSION_GRANTED”改为“PackageManager.MATCH_UNINSTALLED_PACKAGES”。
5、第336页的“9.1.1 表面视图SurfaceView”
该页第二行的“这个途径便是内部类表面持有者SurfaceHolder外部调用”改为“这个途径便是内部类表面持有者SurfaceHolder。外部调用”,也就是在“外部调用”前面增加一个句号。
6、第338页的“9.1.2 使用Camera拍照”
autoFocus方法的说明文字“参数自动对焦接口AutoFocusCallback的onAutoFocus方法在对焦完成时触发”语句不通顺,改为“输入参数为自动对焦接口AutoFocusCallback的实例,该接口的onAutoFocus方法在对焦完成时触发”。
7、第345页的“9.1.4 使用Camera 2拍照”
该页最后一行,“4. 图像读取器ImageReader”小节中,getSurface的方法说明文字“获得图像读取的表面对象”改为“获得图像读取器的表面对象”,也就是增加一个“器”字。
8、第349页的“9.2.1 拖动条SeekBar”
该小节第一行“拖动条SeekBar继承自进度条ProcessBar”,把“ProcessBar”改为“ProgressBar”。
9、第353页的“9.2.3 录音与播音”
setAudioSamplingRate方法后面的描述文字“单位千赫兹(kHz)”改为“单位赫兹(Hz)”。
10、第364页的“9.3.2 摇一摇——加速度传感器”
该小节第二行末尾的“其他类似的应用还摇骰子”改为“其他类似的应用还有摇骰子”,也就是增加一个“有”字。
11、第381页的“9.5.1 NFC近场通信”
“2. 启用NFC感应/禁用NFC感应”小节第一段第一行和第三行的两处“重载”改为“重写”。
12、第516页的“11.6.2 小知识:三维图形接口OpenGL”
该小节第三段第四行的“比如显示生活中黑板的漆面”改为“比如现实生活中黑板的漆面”,也就是把“显示”改为“现实”。
13、第520页的“11.6.2 小知识:三维图形接口OpenGL”
“此时自定义的渲染器GLRender必须重载onSurfaceCreated”这句里面的“重载”改为“重写”。
14、第553页的“12.3.1 属性动画的用法”
removeListener的方法说明改为“移除指定的动画监听器”,也就是把“移出”改为“移除”。
removeAllListeners的方法说明改为“移除所有动画监听器”,也就是把“移出”改为“移除”。
15、第557页的“12.3.3 插值器和估值器”
该小节第二段第一行的“默认是匀速播放”改为“默认是先加速再减速”。
16、第662页的“14.2.2 创建JNI接口”
表14-2 基本数据类型的转换关系,“Java的数据类型”该列的Int和Float要改为小写的int和float。
17、第725页的“15.4.1 文字转语音TextToSpeech”
图例“15-39 小米手机内置的语音引擎”改为“图15-39 小米手机内置的语音引擎”,也就是在“15-39”前面加个“图”。
8、第725页的“15.4.1 文字转语音TextToSpeech”
表15-5 setLanguage方法的返回值说明,下面表格左侧的标题由“TextToSpeech类的返回值”改为“setLanguage方法的返回值”。
19、第726页的“15.4.1 文字转语音TextToSpeech”
图15-41下方的文字“接下来就可以大胆设置朗读的语音了”改为“接下来就可以大胆设置朗读的语言了”,也就是把“语音”改为“语言”。
若对本书内容有任何疑问,可加入QQ群进行咨询,群号是493199768
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138853.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...