此刻,本人还是一个android菜鸟,刚刚开始起步学习android相关知识,想用blog记录自己学习的过程,一方面给他人提供帮助,另一方面给自己个复习的地方。

在一起学习Android之前,先跟大家分享几个非常有用的网站:

1)Android developer

2)Google code

3)StackOverFlow

4)Android developers need to know

网上学习的资源到处是,我们主要是要学会择优使用,充分使用,而且较好的资源都是英文的,所以也可以一起提高英文水平,让我们一起加油吧!!

学习Android之前可以先了解一下Android的历史,接下来让我们一起好好了解下android的系统架构:(开发环境配置可自行了解)

  • Linux Kernel Layer:学过操作系统的同学都应该知道,一个的操作系统最基本的功能包括进(线)程管理,存储器管理,文件管理,设备(I/O)管理等,对于现在的多核CPU,可能还要考虑进行处理器的管理,而android选择Linux作为其底层,自有其道理所在,一方面可能是因为Linux开源,另一方面当然是因为Linux系统本身无可替代的优越性。在android系统中涉及到的Linux kernel Layer,主要是提供各种各样的driver,因为os最基本功能就是分隔了软件跟底层硬件,并且还能根据硬件情况,统一管理调度软件。
  • System lib Layer:该层主要是使用C++进行开发的,包含各种本地类库,如多媒体,数据库,网络,图像等,硬件抽象层HAL,负责与底层驱动打交道,还有个android运行时,值得一提得是Dalvik VM是根据JVM重新定制的一种虚拟机,其运行方式较JVM多了一步,就是还要把.class文件通过dx.bat批处理文件转换成.dex执行文件,这样才能在Dalvik上运行。
  • Framework Layer:提供给开发者使用的各种API,除了使用之外,我们也可查看其源文件,这有助于深入理解整个android体系

Q:Android中没有main函数,那它的程序入口在哪里?

A:在xml配置文件,<intent-filter><action android:name="android.intent.action.MAIN" /></intent-filter>

下面先介绍几个Android常识(含常用工具):

1、安装软件格式为.apk,系统级软件在/system/app下,第三方软件在/data/app下,相应数据放在/data/data;

2、ddms:dalvik debug manage system. dalvik虚拟机调试系统

3、aapt : android application package tools android应用程序打包工具

4、adb.exe : android debug bridge . android调试桥 (推荐大家添加到环境变量)

adb devices : 列出电脑上连接的设备
adb shell : 来到模拟器或者真实手机的终端. 执行linux 命令.
adb push: 把电脑上的一个文件 放在模拟器里面.

adb pull: 把手机里面的文件 导出到电脑.

5、dx.bat:把.class文件变成.dex,一般在真实手机上看到的.odex文件是.dex经过压缩、加密、签名等生成的

6、dexdump:反编译.dex文件,但得到的是另一种叫smali语言的文件?!

7、直接解压apk,由于文件经过加密,所以大部分内容是不可见的,只有raw文件和其他图形文件可见

8、关于资源文件的访问:

1)res中的raw资源是通过R文件访问的:getResources().openRawResource(R.raw....);

2)asset中的资源是直接通过路径访问的,其资源不会配置到R文件中,所以访问也较快;

9、通过apktool对apk文件进行反编译的效果:.dex变成smali,但是xml布局文件可见了

10、另外一种成功的反编译方法:

使用dex2jar把.dex变成.jar,.jar通过XJad工具变成(.class) .java

11、关于logcat中的信息:

pid:进程id,log的类别(按严重级别排列):Error,warn,infor,debug,verbose,调试程序或程序出错都得查看log,log信息放在/data/log

12、产生log文件的情况:

1)程序异常退出:uncased exception

2)强制关闭:force closed(FC),“Fatal Exception:Nullpoint,classnotfound等”

3)无响应:App No Response (ANR),出现这种情况的原因通常有:

a.界面操作等待响应时间超过5s

b.HandleMessage回调函数中执行超过10s,例如,BroadcastReceiver的生命周期只有10秒左右,若重写onReceive()内做超过10秒的业务,则会出现ANR错误,

通常较耗时间的task应通过Intent发给service完成,不能用子线程解决,'causeBroadcastReceiver的生命周期太短,线程没终结,它就挂了,成了空进程,很有可能被系统直接干掉

13、手机一般有2种出厂模式:

1)development:有root权限,支持打大量的,,log文件;

2)user:一般不打log

14、log文件的信息:系统的基本信息,内存,CPU,垃圾回收;事件信息(DDMS中的格式);虚拟机信息,进程,线程跟踪等

15、给想做软件开发的同学的一些tips:软件行业有潜力,应当学会规避行业压力,尽量做到同类创新,满足用户需求

Android journey 2 @Android系统框架的更多相关文章

  1. Android动画学习(一)——Android动画系统框架简介

    2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其 ...

  2. Android入门学习:Android 系统框架及应用程序执行过程

    Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...

  3. Android系统--输入系统(五)输入系统框架

    Android系统--输入系统(五)输入系统框架 1. Android设备使用场景: 假设一个Android平板,APP功能.系统功能(开机关机.调节音量).外接设备功能(键盘.触摸屏.USB外接键盘 ...

  4. 11.1 Android显示系统框架_framebuffer原理及改进

    1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC- ...

  5. Android的系统框架的深入认识

    Android采用层次化系统架构,官方公布的标准架构如下图所示.Android由底层往上分为4个主要功能层,分别是linux内核层(Linux Kernel),系统运行时库层(Libraries和An ...

  6. Android的系统框架

    Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核.  图1:Android系统架构图 每 ...

  7. Android源码分析(三)-----系统框架设计思想

    一 : 术在内而道在外 Android系统的精髓在源码之外,而不在源码之内,代码只是一种实现人类思想的工具,仅此而已...... 近来发现很多关于Android文章都是以源码的方向入手分析Androi ...

  8. 11.2 Android显示系统框架_android源码禁用hwc和GPU

    2. 修改tiny4412_Android源码禁用hwc和gpu(厂家不会提供hwc和gpu的源代码,没有源代码就没法分析了,因此在这里禁用该功能并用软件库实现)最终源码: git clone htt ...

  9. 2015最流行的Android组件、工具、框架大全

    Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...

随机推荐

  1. XAML

    XAML定义 XAML是一种相对简单.通用的声明式编程语言,它适合于构建和初始化.NET对象. XAML仅仅是一种使用.NET API的方式,把它与HTML.可伸缩向量图形(SVG)或其他特定领域的格 ...

  2. public animal this[int index]|索引器的使用

    学习如何使用索引器,索引器的使用是public 类型 this[int index]{get{};set{}} ,访问通过类的实例(对象)加[i], 例如animal[i],就像访问数组一样,其实就是 ...

  3. sql语句添加约束

    sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...

  4. 集合框架学习之Guava Collection

    开源工具包: Guava : Google Collection Apache:Commons Collecton 1.1 Google Collections Guava:google的工程师利用传 ...

  5. iOS - 苹果健康架构 & 基于HealthKit的健康数据的编辑

    最近公司需求,研究了一周之久的苹果健康架构,内容包括:资料调研.报告与HealthKit.framework - API,这一研习还在持续进行中.至此,主要认识到了2点:对苹果健康健康架构设计与实现原 ...

  6. AMQ学习笔记 - 15. 实践方案:基于ActiveMQ的统一日志服务

    概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...

  7. UI布局

    1,初始化控件一般在onCreate()中完成,由于构造器中尚未完成控件加载,不能在其内初始化控件. 2,Activity子类必须含有无参构造.Intent.startActivity()方法调用的是 ...

  8. Shell指令

    Shell指令 1.Shell原理图 2.Shell指令的基本语法 Shell指令 Shell –选项 参数 Shell –选项 Shell参数 3.常用的Shell指令 1)ls指令:显示文件信息 ...

  9. mstsc命令详解

    1: 在xp sp2中用mstsc /console命令可以登录到远程桌面的控制台(和在电脑前以同一用户登录),xp升级到sp3后,不能这样用了.sp3中命令应该换成mstsc /admin. 2: ...

  10. Google面试题:计算从1到n的正数中1出现的次数

    题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 找工作,准备看写题目,题目说是Goo ...