Android Studio Debug:编码五分钟,调试俩小时

前言

整理并积累Android开发过程中用到的一些调试技巧,通过技巧性的调试技能,辅助增强代码的健壮性、安全性、正确性

案例一:抛出明显异常

  • 常见的:除数为0问题
class MainActivty : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button.setOnClickListener {
               val i = 1/0
        } 
    }
}

会提示错误原因,并告知在哪一行

  • 一般错误
class MainActivty : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button.setOnClickListener {
               val s = "Candy"   //假设此处是在一个方法内,我们无法看到
               var i = 0
               i = s.toInt()
        } 
    }
}    

会提示错误原因,并告知在哪一行
错误原因可能不认识,直接找错误关键字,检索百度

案例二:逻辑问题

  • println()方式调试
class MainActivty : AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button.setOnClickListener {
            var res = 0
            for (i in 1 until 10){
               res=+i     //该处将逻辑故意写错  应为 +=
               println("i=${i},res=${res}")
            }
            val s:String = StringTo(res)
            Toast.makeText(this,s,Toat.LENGTH.SHORT).show()
        } 
    }
    private fun StringTo(res:String){
        println("将Int转换成String")
        resturn res.roString()
    }
}    

会掺杂其他方法日志

  • log方式调试
class MainActivty : AppCompatActivity(){
    val TAG = "MainActivity"
    override fun onCreate(savedInstanceState: Bundle?){
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        button.setOnClickListener {
            var res = 0
            for (i in 1 until 10){
               res=+i     //该处将逻辑故意写错  应为 +=
               Log.d(TAG,"i=${i},res=${res}")
            }
            val s:String = StringTo(res)
            Toast.makeText(this,s,Toat.LENGTH.SHORT).show()
        } 
    }
    private fun StringTo(res:String){
        println("将Int转换成String")
        resturn res.roString()
    }
}    

筛选条件多:Debug、Info、Worn、Error以及自定义筛选等
可以直接根据key筛选
调试数据较多时,不方便查看,不够灵活

  • debug模式调试

  • resume progrem: 继续执行
  • step over: 跳入下一行
  • step into: 进入自定义方法,非方法则下一行
  • force step into:进入所有方法,非方法则下一行
  • step out: 跳出方法,且方法执行完成
  • run to cursor: 跳入逻辑的下一个标记点

debug运行时,会出现提示框,无需操作

案例三:代码丢失||项目问题

  • history
    不小心删除代码/文件且已save并退出
    右击项目 -> Local History -> Show History -> 选择某一历史右键 -> Revert

作者:Coward881
链接:https://juejin.cn/post/7114926062982660103

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

在这里插入图片描述


相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

一、架构师筑基必备技能

1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……

在这里插入图片描述

二、Android百大框架源码解析

1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程

在这里插入图片描述

三、Android性能优化实战解析

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 百度APP技术:Android H5首屏优化实践
  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 携程:从智行 Android 项目看组件化架构实践
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?

在这里插入图片描述

四、高级kotlin强化实战

1、Kotlin入门教程
2、Kotlin 实战避坑指南
3、项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始

  • Kotlin 写 Gradle 脚本是一种什么体验?

  • Kotlin 编程的三重境界

  • Kotlin 高阶函数

  • Kotlin 泛型

  • Kotlin 扩展

  • Kotlin 委托

  • 协程“不为人知”的调试技巧

  • 图解协程:suspend

在这里插入图片描述

五、Android高级UI开源框架进阶解密

1.SmartRefreshLayout的使用
2.Android之PullToRefresh控件源码解析
3.Android-PullToRefresh下拉刷新库基本用法
4.LoadSir-高效易用的加载反馈页管理框架
5.Android通用LoadingView加载框架详解
6.MPAndroidChart实现LineChart(折线图)
7.hellocharts-android使用指南
8.SmartTable使用指南
9.开源项目android-uitableview介绍
10.ExcelPanel 使用指南
11.Android开源项目SlidingMenu深切解析
12.MaterialDrawer使用指南

在这里插入图片描述

六、NDK模块开发

1、NDK 模块开发
2、JNI 模块
3、Native 开发工具
4、Linux 编程
5、底层图片处理
6、音视频开发
7、机器学习

在这里插入图片描述

七、Flutter技术进阶

1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter开发环境搭建和调试
5、Dart语法篇之基础语法(一)
6、Dart语法篇之集合的使用与源码解析(二)
7、Dart语法篇之集合操作符函数与源码分析(三)

在这里插入图片描述

八、微信小程序开发

1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战……

在这里插入图片描述

全套视频资料:

一、面试合集

在这里插入图片描述


二、源码解析合集

在这里插入图片描述


三、开源框架合集

在这里插入图片描述


欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取↓↓↓

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...