Android 开发高手课 课后练习

Posted liqw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 开发高手课 课后练习相关的知识,希望对你有一定的参考价值。

android 开发高手课 课后练习(1)

一、Chapter01 崩溃

https://time.geekbang.org/column/article/70602

https://github.com/AndroidAdvanceWithGeektime/Chapter01

1、遇到native cash时,生成.dmp文件

先检查sdk/ndk环境

技术图片

 

在local.properties配置sdk/ndk

技术图片

打包运行效果

技术图片

 

点击CRASH按钮后生成的.dmp文件

 技术图片

 2、利用breakpad的minidump_stackwalk分析,先获取minidump_stackwalk

 https://github.com/google/breakpad

 先克隆

git clone https://github.com/google/breakpad.git 这个项目到本地

然后执行命令,即可拿到所需文件

技术图片

文件位置,可以拷贝到项目tools/mac/minidump_stackwalk中使用,

技术图片

 执行命令./tools/mac/minidump_stackwalk sdcard/crashDump/***.dmp >crashLog.txt  后出错,先把.dmp文件拷贝到电脑上再执行该命令

技术图片

 为了解决could not be read这个问题,可以使用adb pull sdcard/crashDump 拷贝手机文件到电脑上

技术图片

 

技术图片

使用命令分析文件,生成crashLog.txt,下面是一行代码执行命令,不要分开多次执行

 ./tools/mac/minidump_stackwalk ./crashDump/***.dmp >crashLog.txt

 

技术图片

 

3、分析

 arm64使用 aarch64-linux-android-4.9;   arm使用arm-linux-androideabi-4.9 ,千万别看错,不然执行报错

而且aarch64-linux-android-addr2line的路径、libcrash-lib.so的路径要按照电脑、项目中的路径保持一致

$ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -f -C -e sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600
Crash()
/Users/apple/Documents/developer/Git/Chapter01/sample/.externalNativeBuild/cmake/debug/arm64-v8a/../../../../src/main/cpp/crash.cpp:10

  

输出的结果是Crash,如图

技术图片

可以分析出Crash函数出现了问题

技术图片

 

项目已经放到github:https://github.com/libill/Chapter01

添加了tools/mac/minidump_stackwalk、crashDump、crashLog.txt。

 

以上是关于Android 开发高手课 课后练习的主要内容,如果未能解决你的问题,请参考以下文章

数据-第17课-栈课后练习

数据--第39课 - 二叉树课后练习

软件工程课后总结与反思

# 20165210 课后代码作业练习

吴恩达 MachineLearning 第五周课后练习代码

使用 Swift 开发应用程序 - 第 13 课 - 练习:“isBelow13”