实习期间小问题备忘 2

1. 什么是dex文件

    Android dvm执行的是.dex的格式文件,就像java虚拟机一样执行的是class文件,Android程序编译完成后生成.class文件,然后dex工具将.class文件处理成.dex文件,然后将资源文件和.dex文件等打包成apk文件,也就是说apk,Android package中包含资源文件和.dex文件。
    dvm是基于寄存器的虚拟机,也就是Dalivk virtual machine,它只能执行.dex的Dalvik executable文件。

2. apk和dex

apk文件即为Android安装包,当程序写好后,使用Android的打包工具,(Android studio的gradle是自动构建工具)。打包工具将.dex文件,res文件,Manifest文件以及依赖库等等组合成一个应用apk,dex文件实际上是Android Dalvik执行程序。

3. Dalvik 和 ART(Android runtime)

  1. Dalvik是Android5.0之前的运行时虚拟机,支持已转换的.dex格式的java应用程序的执行,Dalvik是经过优化,允许在有限内存中运行多个虚拟机的实例。在5.0之前所使用的Dalvi运行时一个apk中只能包含一个dex文件,为了解决这个限制,我们通常使用multidex support库
  2. ART:Android runtime。ART的机制与DVM不同,DVM每次应用运行时需要将字节码通过即时编译器(JIT)转换为机器码,而在ART环境下,应用第一次安装时,字节码会预先编译成机器码,这个过程叫做预编译(AOT,Ahead of time),这样首次启动和执行都会变得更加快速。ART实际上是用空间换取时间,系统的性能会显著提升,应用体验更加流畅,但是机器码占用的空间更大,应用的安装时间也会变长。Android 5.0之后ART是支持一个APK中包含多个dex文件,在APK安装时,会预先扫描所有的classes,.dex文件,把他们编译成一个.oat的可执行文件。

4. adb 命令

adb:Android debug Bridge 调试桥,通过adb 采用监听TCP5554端口通讯? 借助adb工具,可以管理设备和手机模拟器的状态,可以进行很多手机的操作,比如安装软件,系统升级,shell 命令等,adb是连接Android和pc端的桥梁。
adb devices: 显示当前运行的所有模拟器;
adb -s 模拟器编号 命令
adb install -r 应用程序.apk:安装应用程序
adb pull <remote><local> 获取模拟器中文件
abb push <local><remote> 向模拟器中写文件
adb shell :进入shell 模式
卸载apk包:adb shell
cd data/app rm apk包 exit
adb uninstall apk包的主包名
adb help
adb logcat -s 标签名

5. gradle

  • 顶层build.gradle:buildscript 和 allproject中两处repository闭包,dependencies闭包声明gradle插件,
  • app 目录下module的gradle文件,第一行应用了一个插件,有两种值可以选,com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块,应用程序模块可以直接运行,另一个作为代码库依附于别的应用程序模块来运行。
  • Android闭包,在这个闭包中配置项目的基本属性,如编译版本,构建工具版本,buildtype闭包中指定生成安装文件的相关配置。debug和release,debug可以忽略不写,其中minifyEnabled指定是否混淆使用的规则文件还有混淆规则。注意通过Android studio直接运行生成的项目都是测试版安装文件
  • dependencies包可以指定当前项目所有的依赖关系,3种依赖方式:本地依赖,库依赖和远程依赖。本地依赖可以对本地的jar包或者目录添加依赖关系,库依赖可以对项目中的库模块添加依赖关系,远程依赖可以对就center或者maven库等等上面的远程仓库添加依赖关系。(会自动下载下来)Gradle在构建项目时会首先检查一下本地是否有这个库的缓存,如果没有回自动联网下载,然后再添加到项目的构建路径中去
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,270评论 25 707
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 7,544评论 3 25
  • 资料 Git教程(廖雪峰) Git教程(菜鸟教程) Git - 简明指南 Git官网 首次创建 创建用户 进入代码...
    南阳临风阅读 189评论 0 0
  • 基础知识 文本使用闭合标签(标签,段落,文本) 引用文本使用自闭和标签 css display属性1:block(...
    该昵称注册中阅读 308评论 0 0
  • 云梦泽文化生态旅游区由深圳美丽集团和湖北楚盛堂红木家具有限公司联合打造,总投资20亿元,共分云梦泽水乡、云梦泽古城...
    姜华的笔记本阅读 1,586评论 0 1