美文网首页
实习期间小问题备忘 2

实习期间小问题备忘 2

作者: 安安zoe | 来源:发表于2017-08-20 22:34 被阅读0次

    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在构建项目时会首先检查一下本地是否有这个库的缓存,如果没有回自动联网下载,然后再添加到项目的构建路径中去

    相关文章

      网友评论

          本文标题:实习期间小问题备忘 2

          本文链接:https://www.haomeiwen.com/subject/yvsqdxtx.html