美文网首页
Android开发高手课-第一课作业

Android开发高手课-第一课作业

作者: woitaylor | 来源:发表于2018-12-16 15:15 被阅读74次

我的环境是vmware+ubuntu18+ShadowSocks(科学上网)

1.ShadowSocks设置为“全局模式”,同时打开“允许其他设备连接”。如下图所示:


shadowSockets设置.png

2.查询本机的IP地址:


本机ip.png

3.虚拟机的VPN设置,IP地址改成你本机的IP地址:


ubuntu_vpn设置.png

4.设置git:
设置代理 http/https协议(clone https://前缀的repo会走ss)
git config --global http.proxy 'socks5://192.168.31.200:1080'
git config --global https.proxy 'socks5://192.168.31.200:1080'

如果想停止代理可以是用如下命令:
git config --global --unset http.proxy
git config --global --unset https.proxy

5.下载depot_tools:
我的clone目录为:/home/liangliangli
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

如果无法连接:那么就是前面的步骤没弄好,无法连接到地址。
clone好之后设置下环境变量(注意:目录改成自己对应的目录):

编辑~/.bashrc文件:vim ~/.bashrc
在文件末尾加上:
’ export PATH="$PATH:/home/liangliangli/depot_tools" '

环境变量.png

可以使用命令'echo $PAHT'测试是否设置成功:

测试环境变量.png

6.编译breakpad:
首先需要安装python,以及C编译环境,否则 configure 无法使用。
1.安装C编译环境:(解决:configure: error: no acceptable C compiler found in $PATH)

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install build-essential

2.安装Python:

  • sudo apt-get update
  • sudo apt-get install python3.6

3.获取breakpad:(我的操作目录在:/home/liangliangli)

  • mkdir breakpad && cd breakpad
  • fetch breakpad (第5步的目的就是为了可以使用fetch命令)
  • cd src
    到这里先别编译。把breakpad/src/src下面的代码全部拷贝到大佬Sample的Sample/Chapter01-master/breakpad-build/src/main/cpp/external/libbreakpad/src目录下,选择全部覆盖。接下来就开始编译breakpad获取工具:
  • ./configure && make
    工具的目录:/home/liangliangli/breakpad/src/src/processor

4.打开Android Studio打开工程安装Sample App,进入界面点击Crash(为了方便还是授权SD访问)。

5.生成crashLog.txt文件:

  • 把手机crashDump下的dmp文件拷贝到 '/home/liangliangli/crashDump' 目录下


    dmp文件.png
  • cd /home/liangliangli/crashDump

  • /home/liangliangli/breakpad/src/src/processor/minidump_stackwalk 91da682d-7c84-49b7-2b0a7bb8-6182697f.dmp >crashLog.txt


    生成crashLog.png
crashLog内容.png

6.找出报错的函数:
从上图可以看到我手机的CPU:arm64

  • cd /Android/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
  • ./aarch64-linux-android-addr2line -f -C -e /home/liangliangli/Sample/Chapter01-master/sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600

如果手机CPU是32位:

  • cd /Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin#
  • ./arm-linux-android-addr2line -f -C -e /home/liangliangli/Sample/Chapter01-master/sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600

最后一个参数是上图蓝色框框里面的偏移量:共享库libcrash-lib.so的开始虚拟地址+偏移量0x600就是我们奔溃函数的位置了。


奔溃函数.png

相关文章

网友评论

      本文标题:Android开发高手课-第一课作业

      本文链接:https://www.haomeiwen.com/subject/ohztkqtx.html