第一章 Android体系与系统架构

1. Dalvik 和 ART(Android Runtime)
  在Dalvik中应用好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用。
在ART中应用好比是一辆组装好了的自行车,装好就可以骑了。

2. Android源码目录结构:(一个可以查看Android源代码网站:http://androidxref.com/)

  Makefile (描述Android各个组件间的联系并指导它们进行自动化编译)
  bionic (bionic C库)
  bootable (启动引导相关代码)
  build (系统编译规则等基础开发包配置)
  cts (Google兼容性测试标准)
  dalvik (Dalvik虚拟机)
  development (应用程序开发相关)
  external (android使用的一些开源模块)
  frameworks (Framework框架核心)
  hardware (厂商硬件适配层HAL)
  out (编译完成后的代码输出目录)
  packages (应用程序包)
  prebuilt (x86和arm架构下预编译资源)
  sdk (sdk及模拟器)
  system (底层文件系统库、应用及组件)
  vendor (厂商定制代码)

3.Android系统目录
  /system/data是开发者特别关心的两个目录。

  /system目录下主要有:/app/fonts/framework/lib/media/usr等子目录
  例如,查看系统的属性信息文件 /system/build.prop

[email protected]_umts:/system $ cat build.prop# begin build properties# autogenerated by buildinfo.shro.build.id=LMY47M.M003ro.build.display.id=LMY47M.M003ro.build.version.incremental=8ro.build.version.sdk=22ro.build.version.codename=RELro.build.version.all_codenames=RELro.build.version.release=5.1ro.build.date=Wed Aug 19 10:44:57 PDT 2015ro.build.date.utc=1440006297ro.build.type=userro.build.user=hdsplatro.build.host=buildlinux16ro.build.tags=release-keysro.build.flavor=falcon_gpe-userro.product.model=XT1032ro.product.brand=motorolaro.product.name=falcon_gpero.product.device=falcon_umtsro.product.board=MSM8226......

  /data目录下主要有/app/data/system/misc等子目录,其中/data/data是开发者访问最多的目录,这里包含了app的数据信息、文件信息以及数据库信息等,以包名的方式来区别不同的应用。

第二章 Android开发工具新接触

1.adb命令的来源
  /system/core/toolbox/frameworks/base/cmds是所有adb命令和shell命令的来源,此处链接的是Android 6.0的源码路径。

2.常用的android命令
  android list avds 列出所有创建的android模拟器

android list devices
  android list targets 列出我们所有的SDK可用版本

hujiawei-MBPR:hexoblog hujiawei$ android list targetsAvailable Android targets:----------id: 1 or "android-8"     Name: Android 2.2     Type: Platform     API level: 8     Revision: 3     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 Tag/ABIs : default/armeabi----------id: 2 or "android-10"     Name: Android 2.3.3     Type: Platform     API level: 10     Revision: 2     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 Tag/ABIs : default/armeabi----------id: 3 or "android-15"     Name: Android 4.0.3     Type: Platform     API level: 15     Revision: 5     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800 Tag/ABIs : no ABIs.----------

3.常用的adb命令
  adb push <local> <remote>,         adb pull <remote> <local> (文件传输)
  adb install xxx,        adb uninstall yyy (apk安装和卸载)
  adb usb,  adb tcpip <port>,  adb connect,  adb devices (连接相关命令)
  adb start-serveradb kill-serveradb rebootadb remount (重新挂载系统分区,使系统分区重新可写)

  adb shell相关命令:
  adb shell df (查看系统盘符)
  adb shell input keyevent (模拟按键输入,例如adb shell input keyevent 3表示按下HOME键)
  adb shell input touchscreen (模拟触屏输入,例如adb shell input touchscreen swipe 18 665 18 350 )

  adb shell dumpsys activity activities (查看activity运行状态)

hujiawei-MBPR:hexoblog hujiawei$ adb shell dumpsys activity activitiesACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)Display #0 (activities from top to bottom):  Stack #0:    Task id #279    * TaskRecord{2fbcccec #279 A=com.android.launcher U=0 sz=1}      userId=0 effectiveUid=u0a15 mCallingUid=1000 mCallingPackage=android      affinity=com.android.launcher      intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher/com.android.launcher2.Launcher}      realActivity=com.android.launcher/com.android.launcher2.Launcher      autoRemoveRecents=false isPersistable=true numFullscreen=1 taskType=1 mTaskToReturnTo=0      rootWasReset=false mNeverRelinquishIdentity=true mReuseTask=false      Activities=[ActivityRecord{74b834e u0 com.android.launcher/com.android.launcher2.Launcher t279}]      askedCompatMode=false inRecents=true isAvailable=true      lastThumbnail=null lastThumbnailFile=/data/system/recent_images/279_task_thumbnail.png      hasBeenVisible=true firstActiveTime=1448539994507 lastActiveTime=1448539994507 (inactive for 58s)

  adb pm xxx (Package管理信息)
  例如,查看所有的packages

hujiawei-MBPR:hexoblog hujiawei$ adb shell pm list packages -fpackage:/system/app/YouTube/YouTube.apk=com.google.android.youtubepackage:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephonypackage:/system/app/MediaShortcuts/MediaShortcuts.apk=com.google.android.gallery3dpackage:/data/app/com.support.android.designlibdemo-1/base.apk=com.support.android.designlibdemopackage:/system/priv-app/Velvet/Velvet.apk=com.google.android.googlequicksearchboxpackage:/system/priv-app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendarpackage:/data/app/com.imooc.animatedselector-1/base.apk=com.imooc.animatedselectorpackage:/system/priv-app/MediaProvider/MediaProvider.apk=com.android.providers.mediapackage:/system/priv-app/GoogleOneTimeInitializer/GoogleOneTimeInitializer.apk=com.google.android.onetimeinitializerpackage:/data/app/com.wandoujia-1/base.apk=com.wandoujiapackage:/system/app/Bug2GoStub/Bug2GoStub.apk=com.motorola.bug2gopackage:/data/app/com.sina.weibo.sdk.gensign-1/base.apk=com.sina.weibo.sdk.gensignpackage:/data/app/com.sohu.inputmethod.sogou-1/base.apk=com.sohu.inputmethod.sogoupackage:/system/priv-app/WallpaperCropper/WallpaperCropper.apk=com.android.wallpapercropperpackage:/data/app/com.jredu.netease.news-1/base.apk=com.jredu.netease.news

  adb am xxx (Activity管理信息)
  例如,启动一个activity adb shell am start -n packageName[+className]

hujiawei-MBPR:hexoblog hujiawei$ adb shell am start com.wandoujiaStarting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=com.wandoujia }
时间: 2024-12-09 17:14:32

第一章 Android体系与系统架构的相关文章

Android深度探索(卷1)HAL与驱动开发 第一章&#160;Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

第一章 Android系统移植与驱动开发概述 心得体会

第一章 Android系统移植与驱动开发概述 心得体会 通过学习Android深度探索(卷1)HAL与驱动开发的第一章Android系统移植与驱动开发,我对android驱动开发与移植概念有了一个整体且系统的把握.在本章中我主要学到了一下的知识 1.Android的系统架构分为Linux内核.C/C++代码库.Android SDK API.应用程序四层. 其中重点讲解第一层 Linux 内核.这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. 2. Android移植可

第一章 Android系统的编译和移植实例

第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入式Linux非常相似. 首先要准备一套可以正常运行Linux系统的一套开发版,需要在其移植Android系统,并能够正常运行. 移植的主要过程为: 1.下载Android Linux 内核 2.安装交叉工具链 3.移植Android Linux 内核支持的平台 4.安装Android SDK 5.获

学习第一章 Android系统的编译和移植实例后的心得体会

说起来,去年在岳老师的带领下就接触了嵌入式系统的编译和移植.而现在我们又开始接触Android系统的编译和移植.第一章主要介绍安卓系统的编译和移植技术.其实安卓和嵌入式非常相似. 安卓 移植涉及的主要过程大致分为六步:1.下载安卓linux内核. 2.安装交叉工具链.3.移植安卓linux内核支持EZ6410平台.4.安装安卓SDK.4.获得安卓根文件系统.5.设置系统环境,完成安卓正常启动.虽然步骤不多,但是涉及了很多东西.在开始内核移植之前,先完成工具链的搭建.在移植过程中会发现硬件差异.差

第一章 android以及智能手机行业相关简介

第一章 android以及智能手机行业相关简介读后感受&知识累计 最近深刻了解到自己基础知识的不足,变不断的开始阅读很多android相关的知识,希望这些对本人未来的职业发展有很大的帮助.下面的部分知识并不是书中原来的样子,是本人综合了一下,整合的感受和知识,本人写博客并不是为了帮助大家在代码层面解决问题,只是为了方便有向我一样的ce来积累知识,固图片很少,纯文字型的. 一.android简介 1.android的产生 android是有OHA(开放手机联盟)vs 谷歌一切提供的一款软件平台,至

开箱即用!Android四款系统架构工具

开箱即用!Android四款系统架构工具_天极网 一款功能强大且实用的开发工具可以为开发者简化开发流程,提高工作效率,允许开发者在应用开发本身投入更多的时间和精力,从而提高作品质量.本文就为大家分享4款实用的Android应用架构工具. 开发者若想开发出一款高质量的应用,一款功能强大的开发工具想必是不可或缺的.开发工具简化了应用的开发流程,也能使开发者在应用开发本身投入更多的精力.本文就为大家带来4款实用的Android应用架构工具. 1. Spring for Android Spring f

第8章 Android 4.0系统的下载与编译

第8章  Android 4.0系统的下载与编译 本章首先的准备Android下载与编译环境,内容主要分为:准备Android下载与编译环境.下载源码.编译源码及内核源码.下载Android 4.0及Goldfish源码中包括下载并初始化repo工具.下载Android源码.其他源码下载源.下载模拟器Goldfish内核源码.编译Android及Goldfish内核源码中切换到Android源码目录命令:$cd WORKING_DIRECTORY 执行如下命令,加载编译过程中用到的命令.环境变量

第一章 部署虚拟环境linux系统 2019年7月15日星期一 第二课

第一章 部署虚拟环境linux系统 2019年7月15日星期一  第二课 1.1 准备的工具 VmawareWorkSation 12.0   虚拟机 RadHatEnterpriseLinux[RHEL]7.0   红帽操作系统 1.2 安装配置VM虚拟机 略…… 1.3 安装配置VM虚拟机 VM配置要开启BIOS里的inte-TV  虚拟化服务 1.4 配置root用户密码 红帽RHCSA考前辅导视频 1.5 Rpm红帽软件包 (1)源代码安装弊端:1.难度高,安装困难. 2.需要自己解决依

《Android深度探索卷一》第一章Android系统移植与驱动开发概述。

<Android深度探索>第一章讲的是Android系统移植与驱动开发概述.这一章节将对Android以及Linux驱动做一个总体的介绍. Android是一个非常优秀的的嵌入式操作系统.经过几年的发展和演进,Android已经形成了非常完善的系统架构.Android的系统架构分为四层,如下图 Android移植可分为两部分:应用移植和系统移植. Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件