当前位置:首页 > 大全 >

android studio 353(android studio最新版本)

来源:原点资讯(www.yd166.com)时间:2022-12-19 06:59:38作者:YD166手机阅读>>

android studio 353,android studio最新版本(1)

今天我分享的是Framework的学习和调试的方法。

首先,Android是一种基于Linux的开放源代码软件栈,为广泛的设备和机型而创建。下图是Android平台的主要组件。

android studio 353,android studio最新版本(2)

从图中你可以看到主要有以下几部分组成:

  • Linux内核
  • Android Runtime
  • 原生C/C 库
  • Java API框架(后面我称之为Framework框架层)
  • 系统应用

我们在各个应用市场看到的,大多是第三方应用,也就是安装在data区域的应用,它们可以卸载,并且权限也受到一些限制,比如不能直接设置时间日期,需要调用到系统应用设置里面再进行操作。

而我们在应用开发过程中使用的四大组件,便是在Framework框架层进行实现,应用通过约定俗成的规则,在AndroidMainfest.xml中进行配置,然后继承对应的基类进行复写。系统在启动过程中解析AndroidMainfest.xml,将应用的信息存储下来,随后根据用户的操作,或者系统的广播触发,启动对应的应用。

那么,我们先来看看Framework框架层都有哪些东西。

Framework框架层是应用开发过程中,调用的系统方法的内部实现,比如我们使用的TextView、Button控件,都是在这里实现的。再举几个例子,我们调用ActivityManager的getRunningAppProcesses方法查看当前运行的进程列表,还有我们使用NotificationManager的notify发送一个系统通知。

让我们来看看Framework相关的代码路径。

android studio 353,android studio最新版本(3)

如何快速地学习、梳理Framework知识体系呢?常见的学习方法有下面几种:

  • 阅读书籍(方便梳理知识体系,但对于解决问题只能提供方向)。
  • 直接阅读源码(效率低,挑战难度大)。
  • 打Log和打堆栈 (效率有所提升,但需要反复编译,添加Log和堆栈代码)。
  • 直接联调,实时便捷(需要调试版本)。

首先可以通过购买相关的书籍进行学习,其中主要的知识体系有Linux操作系统,比如进程、线程、进程间通信、虚拟内存,建立起自己的软件架构。在此基础上学习Android的启动过程、服务进程SystemServer的创建、各个服务线程(AMS/PMS等)的创建过程,以及Launcher的启动过程。熟悉了这些之后,你还要了解ART虚拟机的主要工作原理,以及init和Zygote的主要工作原理。之后随着在工作和实践过程中你会发现,Framework主要是围绕应用启动、显示、广播消息、按键传递、添加服务等开展,这些代码的实现主要使用的是Java和C 这两种语言。

通过书籍或者网络资料学习一段时间后,你会发现很多问题都没有现成的解决方案,而此时就需要我们深入源码中进行挖掘和学习。但是除了阅读官方文档外,别忘了调试Framework也是一把利刃,可以让你游刃有余快速定位和分析源码。

下面我们来看看调试Framework的Java部分,关于C 的部分,需要使用GDB进行调试,你可以在课下实践一下。

我们这里使用Android Studio进行调试,在调试前我们要先掌握一些知识。Java代码的调试,主要依据两个因素,一个是你要调试的进程;一个是调试的类对应的包名路径,同时还要保证你所运行的手机环境和你要调试的代码是匹配的。只要这两个信息匹配,编译不通过也是可以进行调试的。

我们调试的系统服务是在SystemServer进程中,可以使用下面的命令验证(我这里使用Genymotion上安装安卓对应版本镜像的环境演示):

ps -A |grep system_server 查看系统服务进程PID

cat /proc/pid/maps |grep services 通过cat查看此进程的内存映射,看看是否services映射到内存里面

这里我们看到信息:/system/framework/oat/x86/services.odex

odex是Android系统对于dex的进一步优化,目的是为了提升执行效率。从这个信息便可以确定,我们的services.jar确实是跑到这里了,也就是我们的系统服务相关联的代码,可以通过调试SystemServer进程进行跟踪。

下来我们来建立调试环境。

  1. 打开Genymotion,选择下载好Android 9.0的镜像文件,启动模拟器。
  2. 找到模拟器对应的ActivityManagerService.java代码。 我是从http://androidxref.com/下载Android 9.0对应的代码。
  3. 打开Android Studio,File -> New -> New Project然后直接Next直到完成就行。
  4. 新建一个包名,从ActivityManagerService.java文件中找到它,这里为com.android.server.am,然后把ActivityManagerService.java放到里面即可。
  5. 在ActivityManagerService.java的startActivity方法上面设置断点,然后找到菜单的Run -> Attach debugger to Android process勾选Show all process,选中system_server进程确定。

android studio 353,android studio最新版本(4)

首页 123下一页

栏目热文

生活太累短句(生活很累伤感句)

生活太累短句(生活很累伤感句)

1. 我以前以为秘密不能说,现在才知道难过也不能说。2.因为太喜欢,所以什么都能原谅;也是因为太喜欢,所以你才总是得寸进...

2022-12-20 03:38:43查看全文 >>

去印度找老婆好找吗(去印度农村自己找老婆容易吗)

去印度找老婆好找吗(去印度农村自己找老婆容易吗)

话说,这位新娘叫 Babita Rani,来自印度北部的哈里亚纳邦。Babita的婚礼让很多印度女孩儿都很羡慕,尤其是她...

2023-03-14 06:21:24查看全文 >>

呵呸表情包(吐口水动态表情包)

呵呸表情包(吐口水动态表情包)

呸,傻瓜呸,平胸 呸,全是旧图 呸,弱智呸,战五渣 呸,心机婊 呸,心机boy 呸,这么糊的表情图片来自网络,版权归作者...

2022-12-18 12:36:16查看全文 >>

油炸素丸子的做法配方(炸素丸子的配方大全)

油炸素丸子的做法配方(炸素丸子的配方大全)

#剩出来的锅贴馅怎么办 #做一下炸丸子By 飞呀飞呀小企鹅????用料面粉 150g大白菜叶 3叶小葱 3根十三香 半勺...

2022-12-17 06:53:15查看全文 >>

男人送便宜礼物的心理(男人送你的礼物暴露了爱你的程度)

男人送便宜礼物的心理(男人送你的礼物暴露了爱你的程度)

如果一个人经常给你送吃的,给你免费的零食,你会觉得这个人是好人。是对你好的人。但是等有一天这个对你好的人,不给你送吃的了...

2022-12-22 21:14:21查看全文 >>

宙斯和普罗米修斯谁厉害(宙斯和普罗米修斯在天上打架)

宙斯和普罗米修斯谁厉害(宙斯和普罗米修斯在天上打架)

在海贼王846话中,有着精彩表现的宙斯让人难忘,而也引发了多海米的猜测,宙斯的实力到底强不强,与普罗米修斯相比,宙斯到底...

2022-12-20 13:44:16查看全文 >>

麻豆传媒兄妹蕉谈

麻豆传媒兄妹蕉谈

2021年1月,一位姓孙的神秘人,主动找到了麻豆传媒的负责人。对剧本和片酬进行详细沟通后,先后在广东、四川等地组建了3个...

2022-12-17 17:30:38查看全文 >>

动漫侧半脸图片大全(单眼半脸动漫图片)

动漫侧半脸图片大全(单眼半脸动漫图片)

在火影忍者中,不仅有很多俊男美女,也有很多长相非常奇怪的忍者。下面,我们就一起来聊一聊火影忍者中那些长相奇怪的忍者吧!油...

2023-09-14 05:53:03查看全文 >>

二号线西延红光站点(二号线西延红光为啥不修了)

二号线西延红光站点(二号线西延红光为啥不修了)

成都轨道交通五期进度如何?2号线西延线修不修?郫都区安靖镇有没有地铁规划?市域铁路S13线今年是否能开工建设?低运量轨道...

2023-09-11 07:54:25查看全文 >>

情诗撩人100首(最火的荷尔蒙情话)

情诗撩人100首(最火的荷尔蒙情话)

金风玉露一相逢,便胜人间无数。情诗是世界文学的滥觞,它像酒又似梦。今日七夕,朗读100句经典情诗金句,送你人间最美情话。...

2023-01-06 15:10:01查看全文 >>

文档排行