当前位置:首页 > 移动开发 >
《深入解析Android虚拟机》电子书封面

深入解析Android虚拟机

  • 发布时间:2019年03月22日 09:19:03
  • 作者:钟世礼
  • 大小:131 MB
  • 类别:Android电子书
  • 格式:PDF
  • 版本:原版扫描版
  • 评分:9.4

    深入解析Android虚拟机 PDF 原版扫描版

      给大家带来的一篇关于Android相关的电子书资源,介绍了关于虚拟机、Android方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小131 MB,钟世礼编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.1分

      Tags:虚拟机 android 

      内容介绍

      深入解析Android虚拟机

      深入解析Android虚拟机电子书

      读者评价

      唯一的优点可能也就是书厚点。 里面的内容感觉就像是哪里找来的资料拼凑在一起,读起来没有任何逻辑感,每个知识点介是介绍了一下,就是说的不清不楚的,反正你也理解不了。
      代码偏多,适合注重实现的人,不太适合想了解设计架构的初学者。

      内容介绍

      内容简介Android系统从诞生到现在的短短几年时间里,凭借其易用性和开发的简洁性,赢得了广大开发者的支持。在整个Android系统中,DalvikVM一直是贯穿从底层内核到高层应用开发的核心。本书循序渐进地讲解了Android虚拟机系统的基本知识,并剖析了其整个内存系统的进程和运作流程,并对虚拟机系统优化和异常处理的知识进行了详细讲解。本书几乎涵盖了DalvikVM系统的所有主要内容,并且讲解方法通俗易懂,特别有利于读者学习并消化。本书适合Android初学者、Android底层开发人员、源代码分析人员和虚拟机开发人员学习,也可以作为大专院校相关专业师生的学习用书和培训学校的教材。

      内容节选

      解决android关于打开虚拟机时右侧工具栏不显示的问题

       

      一开始我就纳闷了,怎么调试都只是一个光溜溜的界面,右侧的工具栏都没有

      如图:

      就一个光秃秃的界面,什么都没有,这就对调试很不方便

      于是我就试了试各种方法,然而并没有什么卵用。

      后来一次无意之后发现我好像皮肤没选中即:

      这就是问题的关键所在,当你没有选择的皮肤为no skin时,它的工具栏就不会出来

      所以解决办法是:

      将皮肤随便选一个就行了,但就是不能选no skin

      目录

      • 第1章 获取并编译Android源码 1
      • 1.1 获取Android源码 1
      • 1.1.1 在Linux系统获取Android
      • 源码 1
      • 1.1.2 在Windows平台获取Android
      • 源码 2
      • 1.1.3 Windows获取Android L源码 4
      • 1.2 分析Android源码结构 6
      • 1.3 编译Android源码 8
      • 1.3.1 搭建编译环境 8
      • 1.3.2 开始编译 9
      • 1.3.3 在模拟器中运行 10
      • 1.3.4 常见的错误分析 10
      • 1.3.5 实践演练—演示两种编译Android程序的方法 11
      • 1.4 编译Android Kernel 14
      • 1.4.1 获取Goldfish内核代码 14
      • 1.4.2 获取MSM内核代码 17
      • 1.4.3 获取OMAP内核代码 17
      • 1.4.4 编译Android的Linux内核 17
      • 第2章 Java虚拟机基础 19
      • 2.1 虚拟机的作用 19
      • 2.2 Java虚拟机概述 20
      • 2.2.1 JVM的数据类型 20
      • 2.2.2 Java虚拟机体系结构 21
      • 2.2.3 JVM的生命周期 25
      • 2.3 JVM的安全性 26
      • 2.3.1 JVM的安全模型 26
      • 2.3.2 沙箱模型的4种组件 27
      • 2.3.3 分析Java的策略机制 28
      • 2.4 网络移动性 29
      • 2.4.1 现实需要网络移动性 29
      • 2.4.2 网络移动性 30
      • 2.5 内存异常和垃圾处理 31
      • 2.5.1 内存分配中的栈和堆 31
      • 2.5.2 运行时的数据区域 33
      • 2.5.3 对象访问 34
      • 2.5.4 内存泄露 35
      • 2.5.5 JVM的垃圾收集策略 36
      • 2.5.6 垃圾收集器 37
      • 2.6 Java内存模型 37
      • 2.6.1 Java内存模型概述 38
      • 2.6.2 主内存与工作内存 38
      • 2.6.3 内存间交互操作 39
      • 第3章 Dalvik和ART基础 40
      • 3.1 Dalvik VM和JVM的差异 40
      • 3.2 Dalvik虚拟机的主要特征 41
      • 3.3 Dalvik VM架构 42
      • 3.3.1 Dalvik虚拟机的代码结构 42
      • 3.3.2 dx工具 44
      • 3.3.3 Dalvik VM的进程管理 44
      • 3.3.4 Android的初始化流程 44
      • 3.4 Dalvik VM控制VM命令详解 45
      • 3.4.1 基本命令 45
      • 3.4.2 扩展的JNI检测 45
      • 3.4.3 断言 46
      • 3.4.4 字节码校验和优化 46
      • 3.4.5 Dalvik VM的运行模式 47
      • 3.4.6 死锁预测 47
      • 3.4.7 dump堆栈追踪 48
      • 3.4.8 dex文件和校验 48
      • 3.4.9 产生标志位 48
      • 3.5 ART机制基础 48
      • 3.5.1 什么是ART模式 48
      • 3.5.2 ART优化机制基础 50
      • 第4章 分析JNI 52
      • 4.1 JNI的本质 52
      • 4.2 分析Java层 54
      • 4.2.1 加载JNI库 54
      • 4.2.2 实现扫描工作 55
      • 4.2.3 读取并保存信息 56
      • 4.2.4 删除SD卡外的信息 58
      • 4.2.5 直接转向JNI 58
      • 4.2.6 扫描函数scanFile 59
      • 4.2.7 JNI中的异常处理 59
      • 4.3 分析JNI层 60
      • 4.3.1 将Native对象的指针保存到
      • Java对象 60
      • 4.3.2 创建Native层的MediaScanner
      • 对象 60
      • 4.4 Native(本地)层 61
      • 4.4.1 注册JNI函数 61
      • 4.4.2 完成注册工作 63
      • 4.4.3 动态注册 64
      • 4.4.4 处理路径参数 65
      • 4.4.5 扫描文件 66
      • 4.4.6 添加TAG信息 66
      • 4.4.7 总结函数JNI_OnLoad()与函数JNI_OnUnload()的用途 67
      • 4.4.8 Java与JNI基本数据类型
      • 转换 67
      • 4.4.9 JNIEnv接口 69
      • 4.4.10 JNI中的环境变量 70
      • 第5章 分析内存系统 71
      • 5.1 分析Android的进程通信机制 71
      • 5.1.1 Android的进程间通信(IPC)
      • 机制Binder 71
      • 5.1.2 Service Manager是Binder
      • 机制的上下文管理者 72
      • 5.1.3 Service Manager服务 86
      • 5.2 匿名共享内存子系统详解 89
      • 5.2.1 基础数据结构 89
      • 5.2.2 初始化处理 90
      • 5.2.3 打开匿名共享内存设备文件 91
      • 5.2.4 内存映射 93
      • 5.2.5 读写操作 94
      • 5.2.6 锁定和解锁 95
      • 5.2.7 回收内存块 100
      • 5.3 C++访问接口层详解 101
      • 5.3.1 接口MemoryBase 101
      • 5.3.2 接口MemoryBase 108
      • 5.4 Java访问接口层详解 111
      • 第6章 Android程序的生命周期管理 115
      • 6.1 Android程序的生命周期 115
      • 6.1.1 进程和线程 115
      • 6.1.2 进程的类型 116
      • 6.2 Activity的生命周期 116
      • 6.2.1 Activity的几种状态 117
      • 6.2.2 分解剖析Activity 117
      • 6.2.3 几个典型的场景 119
      • 6.2.4 管理Activity的生命周期 119
      • 6.2.5 Activity的实例化与启动 120
      • 6.2.6 Activity的暂停与继续 120
      • 6.2.7 Activity的关闭/销毁与
      • 重新运行 121
      • 6.2.8 Activity的启动模式 121
      • 6.3 进程与线程 122
      • 6.3.1 进程 122
      • 6.3.2 线程 123
      • 6.3.3 线程安全的方法 123
      • 6.3.4 Android的线程模型 123
      • 6.4 测试生命周期 125
      • 6.5 Service的生命周期 129
      • 6.5.1 Service的基本概念和用途 129
      • 6.5.2 Service的生命周期详解 129
      • 6.5.3 Service与Activity通信 129
      • 6.6 Android广播的生命周期 133
      • 6.6.1 Android 的广播机制 133
      • 6.6.2 编写广播程序 133
      • 6.7 ART进程管理 135
      • 第7章 IPC进程通信机制 147
      • 7.1 Binder机制概述 147
      • 7.2 Service Manager是Binder机制的
      • 上下文管理者 148
      • 7.2.1 入口函数 148
      • 7.2.2 打开Binder设备文件 149
      • 7.2.3 创建设备文件 149
      • 7.2.4 管理内存映射地址空间 154
      • 7.2.5 发生通知 156
      • 7.2.6 循环等待 161
      • 7.3 内存映射 162
      • 7.3.1 实现内存分配功能 162
      • 7.3.2 分配物理内存 164
      • 7.3.3 释放物理页面 166
      • 7.3.4 分配内核缓冲区 167
      • 7.3.5 释放内核缓冲区 168
      • 7.3.6 查询内核缓冲区 170
      • 第8章 init进程详解 171
      • 8.1 init基础 171
      • 8.2 分析入口函数 172
      • 8.3 配置文件详解 174
      • 8.3.1 init.rc简介 174
      • 8.3.2 分析init.rc的过程 176
      • 8.4 解析service 179
      • 8.4.1 Zygote对应的service action 179
      • 8.4.2 init组织service 180
      • 8.4.3 函数parse_service和parse_line_service 181
      • 8.5 字段on 184
      • 8.5.1 Zygote对应的on action 184
      • 8.5.2 init组织on 185
      • 8.5.3 解析on用到的函数 186
      • 8.6 在init控制service 186
      • 8.6.1 启动Zygote 186
      • 8.6.2 启动service 187
      • 8.6.3 4种启动service的方式 191
      • 8.7 控制属性服务 194
      • 8.7.1 引入属性 194
      • 8.7.2 初始化属性服务 197
      • 8.7.3 启动属性服务 197
      • 8.7.4 处理设置属性的请求 200
      • 第9章 Dalvik VM的进程系统 202
      • 9.1 Zygote(孕育)进程详解 202
      • 9.1.1 Zygote基础 202
      • 9.1.2 分析Zygote的启动过程 203
      • 9.2 System进程详解 216
      • 9.2.1 启动System进程前的准备
      • 工作 216
      • 9.2.2 分析SystemServer 217
      • 9.2.3 分析EntropyService 220
      • 9.2.4 分析DropBoxManagerService 222
      • 9.2.5 分析DiskStatsService 227
      • 9.2.6 分析DeviceStorageManager Service 231
      • 9.2.7 分析SamplingProfilerService 233
      • 9.2.8 分析ClipboardService 241
      • 9.3 应用程序进程详解 247
      • 9.3.1 创建应用程序 247
      • 9.3.2 启动线程池 256
      • 9.3.3 创建信息循环 257
      • 第10章 Dalvik VM运作流程详解 259
      • 10.1 Dalvik VM相关的可执行程序 259
      • 10.1.1 dalvikvm、dvz和app_process
      • 简介 259
      • 10.1.2 对比app_process和dalvikvm的
      • 执行过程 260
      • 10.2 初始化Dalvik虚拟机 262
      • 10.2.1 开始虚拟机的准备工作 262
      • 10.2.2 初始化跟踪显示系统 262
      • 10.2.3 初始化垃圾回收器 263
      • 10.2.4 初始化线程列表和主线程
      • 环境参数 263
      • 10.2.5 分配内部操作方法的表格
      • 内存 264
      • 10.2.6 初始化虚拟机的指令码相关
      • 的内容 264
      • 10.2.7 分配指令寄存器状态的
      • 内存 264
      • 10.2.8 分配指令寄存器状态的内存
      • 和ZUI基本用的Java库 265
      • 10.2.9 初始化使用的Java类库
      • 线程类 266
      • 10.2.10 初始化虚拟机使用的异常
      • Java类库 267
      • 10.2.11 初始化其他对象 268
      • 10.3 启动Zygote 276
      • 10.3.1 在init.rc中配置Zygote启动
      • 参数 276
      • 10.3.2 启动Socket服务端口 276
      • 10.3.3 加载preload-classes 277
      • 10.3.4 加载preload-resources 277
      • 10.3.5 使用folk启动新进程 278
      • 10.4 启动SystemServer进程 278
      • 10.4.1 启动各种系统服务线程 279
      • 10.4.2 启动DIYI个Activity 280
      • 10.5 加载class类文件 281
      • 10.5.1 DexFile在内存中的映射 281
      • 10.5.2 ClassObject—Class在
      • 加载后的表现形式 283
      • 10.5.3 加载Class并生成相应
      • ClassObject的函数 283
      • 10.5.4 加载基本类库文件 284
      • 10.5.5 加载用户类文件 284
      • 第11章 DEX文件详解 285
      • 11.1 DEX文件介绍 285
      • 11.2 DEX文件的格式 285
      • 11.2.1 map_list 286
      • 11.2.2 string_id_item 288
      • 11.2.3 type_id_item 291
      • 11.2.4 proto_id_item 292
      • 11.2.5 ield_id_item 293
      • 11.2.6 method_id_item 293
      • 11.2.7 class_def_item 294
      • 11.3 DEX文件结构 297
      • 11.3.1 文件头(File Header) 297
      • 11.3.2 魔数字段 298
      • 11.3.3 检验码字段 298
      • 11.3.4 SHA-1签名字段 300
      • 11.3.5 map_off字段 300
      • 11.3.6 string_ids_size和off字段 301
      • 11.4 DEXFile接口详解 303
      • 11.4.1 构造函数 303
      • 11.4.2 公共方法 304
      • 11.5 DEX和动态加载类机制 306
      • 11.5.1 类加载机制 306
      • 11.5.2 具体加载 306
      • 11.5.3 代码加密 308
      • 11.6 动态加载jar和DEX 309
      • 第12章 Dvlik VM内存系统详解 310
      • 12.1 如何分配内存 310
      • 12.2 内存管理机制详解 312
      • 12.3 优化Dalvik虚拟机的堆内存分配 326
      • 第13章 Dalvik VM垃圾收集机制 328
      • 13.1 引用计数算法 328
      • 13.2 Mark Sweep算法 328
      • 13.3 和垃圾收集算法有关的函数 330
      • 13.4 垃圾回收的时机 346
      • 13.5 调试信息 347
      • 13.6 Dalvik VM和JVM垃圾收集机制的
      • 区别 348
      • 第14章 Dalvik VM内存优化机制详解 350
      • 14.1 sp和wp简介 350
      • 14.1.1 sp基础 350
      • 14.1.2 wp基础 351
      • 14.2 智能指针详解 351
      • 14.2.1 智能指针基础 352
      • 14.2.2 轻量级指针 353
      • 14.2.3 强指针 355
      • 14.2.4 弱指针 365
      • 第15章 分析Dalvik VM的启动过程 369
      • 15.1 Dalvik VM启动流程概览 369
      • 15.2 Dalvik VM启动过程详解 370
      • 15.2.1 创建Dalvik VM实例 370
      • 15.2.2 指定一系列控制选项 371
      • 15.2.3 创建并初始化Dalvik VM
      • 实例 376
      • 15.2.4 创建JNIEnvExt对象 378
      • 15.2.5 设置当前进程和进程组ID 382
      • 15.2.6 注册Android核心类的JNI
      • 方法 382
      • 15.2.7 创建javaCreateThreadEtc
      • 钩子 385
      • 第16章 注册Dalvik VM并创建线程 387
      • 16.1 注册Dalvik VM的JNI方法 387
      • 16.1.1 设置加载程序 387
      • 16.1.2 加载so文件并验证 387
      • 16.1.3 获取描述类 392
      • 16.1.4 注册JNI方法 392
      • 16.1.5 实现JNI操作 394
      • 16.2 创建Dalvik VM进程 395
      • 16.2.1 分析底层启动过程 395
      • 16.2.2 创建Dalvik VM进程 395
      • 16.2.3 初始化运行的Dalvik VM 398
      • 16.3 创建Dalvik VM线程 399
      • 16.3.1 检查状态值 399
      • 16.3.2 创建线程 399
      • 16.3.3 分析启动过程 402
      • 16.3.4 清理线程 404
      • 第17章 Dalvik VM异常处理详解 407
      • 17.1 Java异常处理机制 407
      • 17.1.1 方法调用栈 407
      • 17.1.2 Java提供的异常处理类 409
      • 17.2 Java VM异常处理机制详解 409
      • 17.2.1 Java语言及虚拟机的异常
      • 处理机制 410
      • 17.2.2 COSIX虚拟机异常处理的
      • 设计与实现 410
      • 17.3 分析Dalvik虚拟机异常处理的
      • 源码 414
      • 17.3.1 初始化虚拟机使用的异常
      • Java类库 414
      • 17.3.2 抛出一个线程异常 415
      • 17.3.3 持续抛出进程 415
      • 17.3.4 找出异常原因 416
      • 17.3.5 找出异常原因 417
      • 17.3.6 清除挂起的异常和等待
      • 初始化的异常 420
      • 17.3.7 包装“现在等待”异常的
      • 不同例外 420
      • 17.3.8 输出跟踪当前异常的错误
      • 信息 421
      • 17.3.9 搜索和当前异常相匹配的
      • 方法 421
      • 17.3.10 获取匹配的捕获块 423
      • 17.3.11 进行堆栈跟踪 424
      • 17.3.12 生成堆栈跟踪元素 425
      • 17.3.13 将内容添加到堆栈跟踪
      • 日志中 426
      • 17.3.14 将内容添加到堆栈跟踪
      • 日志中 427
      • 17.4 常见异常的类型与原因 428
      • 17.4.1 SQLException:操作数据库
      • 异常类 428
      • 17.4.2 ClassCastException:数据
      • 类型转换异常 428
      • 17.4.3 NumberFormatException:
      • 字符串转换为数字类型时
      • 抛出的异常 428
      • 17.5 调用堆栈跟踪分析异常 429
      • 17.5.1 解决段错误 429
      • 17.5.2 跟踪Android Callback调用
      • 堆栈 431
      • 第18章 JIT编译 434
      • 18.1 JIT简介 434
      • 18.1.1 JIT概述 434
      • 18.1.2 Java虚拟机主要的优化
      • 技术 436
      • 18.1.3 Dalvik中JIT的实现 436
      • 18.2 Dalvik VM对JIT的支持 436
      • 18.3 汇编代码和改动 438
      • 18.3.1 汇编部分代码 438
      • 18.3.2 对C文件的改动 438
      • 18.4 Dalvik VM中的JIT源码 439
      • 18.4.1 入口文件 439
      • 18.4.2 核心函数 447
      • 18.4.3 编译文件 450
      • 18.4.4 BasicBlock处理 458
      • 18.4.5 内存初始化 459
      • 18.4.6 对JIT源码的总结 462
      • 第19章 Dalvik VM内存优化 463
      • 19.1 Android内存优化的作用 463
      • 19.2 查看Android内存和CPU使用情况 464
      • 19.2.1 利用Android API函数查看 464
      • 19.2.2 直接对Android文件进行
      • 解析查询 464
      • 19.2.3 通过Runtime类实现 465
      • 19.2.4 使用DDMS工具获取 465
      • 19.2.5 其他方法 469
      • 19.3 Android的内存泄露 472
      • 19.3.1 什么是内存泄漏 472
      • 19.3.2 为什么会发生内存泄露 473
      • 19.3.3 shallow size、retained size 474
      • 19.3.4 查看Android内存泄露的
      • 工具——MAT 475
      • 19.3.5 查看Android内存泄露的
      • 方法 478
      • 19.3.6 Android(Java)中常见的容易
      • 引起内存泄漏的不良代码 480
      • 19.4 常见的引起内存泄露的坏习惯 480
      • 19.4.1 查询数据库时忘记
      • 关闭游标 481
      • 19.4.2 构造Adapter时不习惯使用
      • 缓存的convertView 481
      • 19.4.3 没有及时释放对象的引用 482
      • 19.4.4 不在使用Bitmap对象时调用
      • recycle()释放内存 482
      • 19.5 解决内存泄露实践 483
      • 19.5.1 使用MAT根据heap dump分析Java代码内存泄漏的根源 483
      • 19.5.2 演练Android中内存泄露
      • 代码优化及检测 489
      • 第20章 Dalvik VM性能优化 491
      • 20.1 加载APK/DEX文件优化 491
      • 20.1.1 APK文件介绍 492
      • 20.1.2 DEX文件优化 493
      • 20.1.3 使用类动态加载技术实现
      • 加密优化 493
      • 20.2 SD卡优化 496
      • 20.3 虚拟机优化详解 497
      • 20.3.1 平台优化—ARM的流水线
      • 技术 497
      • 20.3.2 Android对C库优化 501
      • 20.3.3 优化创建的进程 504
      • 20.3.4 渲染优化 504
      • 第21章 分析ART的启动过程 508
      • 21.1 运行环境的转换 508
      • 21.2 运行 app_process 进程 509
      • 21.3 准备启动 512
      • 21.4 创建运行实例 518
      • 21.5 注册本地JNI函数 519
      • 21.6 启动守护进程 520
      • 21.7 解析参数 521
      • 21.8 初始化类、方法和域 528
      • 第22章 执行ART主程序 534
      • 22.1 进入main主函数 534
      • 22.2 查找目标类 535
      • 22.2.1 函数LookupClass() 535
      • 22.2.2 函数DefineClass() 537
      • 22.2.3 函数InsertClass() 540
      • 22.2.4 函数LinkClass() 541
      • 22.3 类操作 543
      • 22.4 实现托管操作 544
      • 第23章 安装APK应用程序 549
      • 23.1 PackageManagerService概述 549
      • 23.2 主函数main 549
      • 23.3 调用初始化函数 550
      • 23.4 创建PackageManagerService服务 553
      • 23.5 扫描并解析 554
      • 23.6 保存解析信息 570
      • 第24章 ART环境安装APK应用程序 572
      • 24.1 Android安装APK概述 572
      • 24.2 启动时安装 572
      • 24.3 ART安装 581
      • 24.4 实现dex2oat转换 586
      • 24.4.1 参数解析 586
      • 24.4.2 创建 OAT文件指针 588
      • 24.4.3 dex2oat准备工作 588
      • 24.4.4 提取classes.dex文件 589
      • 24.4.5 创建OAT文件 594
      • 24.5 APK文件的转换 595 

      以上就是本次介绍的Android电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:ASP.NET入门经典:Visual Studio 2015(第9版)

      下一篇:游戏化实战

      展开 +

      收起 -

      下载地址:百度网盘下载
      Android 相关电子书
      Gradle for Android
      Gradle for Android PDF 中文清晰版 立即下载
      Android经典应用程序开发
      Android经典应用程序开发 PDF 高清版

      《Android经典应用程序开发》内容理论联系实际,系统化组织。全书由8章组成,涵盖了Android经典应用程序开发的各个方面,知识量巨大,技术要点清晰,结构紧凑而精炼。 Android经典应用程序开

      立即下载
      第一行代码:Android
      第一行代码:Android PDF 超清第2版

      1.CSDN人气时尚博主、CSDN十大搏客新星、Android开发者郭霖大作2.根据Android7.0、AndroidStudio2.2升级版3.Android初学者新手入门,Android开发者进阶4.包含MaterialDesign、运作时管理权限、RecyclerView、百分比

      立即下载
      Android开发入门与实战
      Android开发入门与实战 PDF 扫描第2版

      学习本书可让不懂Android开发的人系统地快速掌握Android 开发的知识,包含Android开发环境搭建、Android SDK介 绍、Android应用程序结构剖析等内容,精选了6个真实的案例,欢迎下载

      立即下载
      Android板级支持与硬件相关子系统
      Android板级支持与硬件相关子系统 PDF 高清版

      Android板级支持与硬件相关子系统 以硬件相关的子系统为核心,提供具有完整知识体系Android系统级的开发知识。本书选定了几个流行的硬件作为参考平台,读者可以很容易地得到硬件和开源代

      立即下载
      读者心得
      144小时10分钟前回答

      android和java一样吗

      Android是主流智能手机的操作系统,JAVA是一种开发语言,两者没有好坏优势之分,只是两种职业岗位选择,学安卓从事移动互联方向开发,学JAVA从事软件方向开发,主要看个人选择,从学JAVA转移到安卓,学安卓转移到JAVA都是可以的。完美空间认为:从职业角度出发,想要快速从事软件行业的开发,对大多数计算机不好的人员,安卓Android开发是最合适的选择。 1、安卓上得应用大多是用java编写的,如果你想编写手机游戏和应用,就去学java吧。安卓应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。建议在安卓课程前期的java学习阶段中,……

      23小时51分钟前回答

      Android分包MultiDex策略详解

      1.分包背景 这里首先介绍下MultiDex的产生背景。 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt。DexOpt的执行过程是在第一次加载Dex文件的时候执行的。这个过程会生成一个ODEX文件,即Optimised Dex。执行ODex的效率会比直接执行Dex文件的效率要高很多。 但是在早期的Android系统中,DexOpt有一个问题,DexOpt会把每一个类的方法id检索起来,存在一个链表结构里面。但是这个链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。尽管在新版本的Android系统中,DexOpt修复了这……

      28小时3分钟前回答

      react-native 封装选择弹出框示例(试用ios&android)

      在开发 App 的时候,经常会使用到对话框(又叫消息框、提示框、告警框)。 在web开发中经常会用得到。今天就来介绍了一下react-native 封装弹出框 之前看到react-native-image-picker中自带了一个选择器,可以选择拍照还是图库,但我们的项目中有多处用到这个选择弹出框,所以就自己写了一下,最最重要的是ios和Android通用。先上动态效果图~ 一、封装要点 1.使用动画实现弹框布局及显示隐藏效果 2.通过一个boolean值控制组件的显示隐藏 3.弹框选项数组通过调用的js传到弹框组件 4.组件选项的字体颜色通过调用js传到组件,实现可拓展; 5.选择选项回调方法 二、代码实现 新建alertSelected.js /** * Created by sybil052 ……

      网友NO.38377
      网友NO.38377

      每次都看见有虚拟机的相关知识,看了一些大神的博客,决定整理一个自己看的懂得笔记,真的大篇大篇的文字我在电脑上看着眼睛累 JVM:JVM本质上就是一个软件,是计算机硬件的一层软件抽象,在这之上才能够运行Java程序 jvm是吧.java文本编译成.class字节码文件,在执行java程序的时候,类加载器把需要的类全部加载到内存当中去 DVM:而DVM就是Dalvik Virtual Machine,是安卓中使用的虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例 .dex文件就是把多个class文件中的常量、方法等放到一起 以下图片可以看出两者不同 ①JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码 ②Dalvik可执行文件体积更小(原因:为了减小执行文件的体积,安卓使用Dalvik虚拟机,SDK中有个dx工具负责将JAVA字节码转换为Dalvik字节码,dx工具对JAVA类文件重新排列,将所有JAVA类文件中的常量池分解,消除其中的冗余信息,重新组合形成一个常量池,所有的类文件共享同一个常量池,使得相同的字符串、常量在DEX文件中只出现一次,从而减小了文件的体积)

      网友NO.49050
      网友NO.49050

      众所周知,Android系统是以Linux为内核构建的。Google为了降低应用的开发难度,并将其适配到不同硬件配置的设备上,在Linux内核之上构建了一个虚拟机,Android应用使用java开发,运行在虚拟机之上。 Dalvik就是Android4.4及之前使用的虚拟机,它使用的是JIT(Just-In-Time)技术来进行代码转译,每次执行应用的时候,Dalvik将程序的代码编译为机器语言执行。随着硬件水平的不断发展以及人们对更高性能的需求,Dalvik虚拟机的不足日益突出。而应运而生的ART(Android RunTime)虚拟机,其处理机制根本上的区别是:它采用AOT(Ahead-Of-Time)技术,会在应用程序安装时就转换成机器语言,不再在执行时解释,从而优化了应用运行的速度。在内存管理方面,ART也有比较大的改进,对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短。

      网友NO.45202
      网友NO.45202

      Dalvik虚拟机基本知识介绍 Dalvik基本概念 Dalvik虚拟机是Android程序的虚拟机,其指令集基于寄存器架构,执行其特有的文件格式——dex字节码,主要负责完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。 android使用的Java代码,跟Java 虚拟机类似,是Android中Java程序的运行基础。 但是dalvik虚拟机与Java虚拟机有较大区别: 1)、dalvik基于寄存器,而JVM基于stack 2)、Dalvik执行的是特有的DEX文件格式,而JVM运行的是*.class文件格式。 优势: 1)、在编译时提前优化代码而不是等到运行时 2)、 虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例。 3)、常量池已被修改为只使用32位的索引,以 简化解释器

      码农之家

      谭今瑶 提供上传

      资源
      43
      粉丝
      23
      喜欢
      193
      评论
      10

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com