1.apk文件
APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式,PC上的安装文件的后缀名为“.exe”。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。
一个APK文件结构为:
META-INF\ Jar文件中常可以看到
res\ 存放资源文件的目录
AndroidManifest.xml 程序全局配置文件
classes.dex Dalvik字节码
resources.arsc 编译后的二进制资源文件
总结下我们发现Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。
在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相 关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件可能不是 这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。
2.dex文件
Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Google 在新发布的Android 平台上使用了自己的Dalvik 虚拟机来定义,这种虚拟机执行的并非Java 字节码,而是另一种字节码:dex 格式的字节码。在编译Java 代码之后,通过Android 平台上的工具可以将Java 字节码转换成Dex 字节码。虽然Google 称Dalvik 是为了移动设备定做的,但是业界很多人认为这是为了规避向sun 申请Javalicense。这个DalvikVM 针对手机程序程式/CPU 做过最佳化,可以同时执行许多VM 而不会占用太多Resource。
对于Android DEX文件进行优化,需要注意的一点是DEX文件的结构是紧凑的,但是我们还是要想方设法的进行提高程序的运行速度,我们就仍然需要对DEX文件进行进一步优化。
调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的没一个域 验证DEX文件中的所有类 对一些特定的类进行优化,对方法里的操作码进行优化 。优化后的文件大小会有所增加,应该是原Android DEX文件的1-4倍。 优化发生的时机有两个:对于预置应用,可以在系统编译后,生成优化文件,以ODEX结尾。
这样在发布时除APK文件(不包含DEX)以外,还有一个相应的Android DEX文件;对于非预置应用,包含在APK文件里的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中
每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。
所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。
不同的应用在不同的进程空间里运行,加之对不同来源的应用都使用不同的Linux用户来运行,可以最大程度的保护应用的安全和独立运行。
Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个 Android应用程序,Zygote就会FORK出一个子进程来执行该应用程序。这样做的好处显而易见:Zygote进程是在系统启动时产生的,它会完 成虚拟机的初始化,库的加载,预置类库的加载和初始化等等操作,而在系统需要一个新的虚拟机实例时。
Zygote通过复制自身,最快速的提供个系统。另外,对于一些只读的系统库,所有虚拟机实例都和Zygote共享一块内存区域,大大节省了内存开 销。Android应用开发和Dalvik虚拟机Android应用所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件)。
而后通过工具软件DX把所有的字节码文件转成Android DEX文件(classes.dex)。最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。
- 大小: 37.4 KB
分享到:
相关推荐
标题中的"apk.rar_.apk_android_android apk_apk"暗示了我们正在讨论的是一个与Android操作系统相关的APK文件,它被压缩在名为"apk.rar"的RAR格式文件中。APK是Android应用程序的主要文件格式,它包含了应用的所有...
综上所述,Android APK文件是Android系统中应用的核心载体,涉及到下载、安装、安全、开发等多个环节。无论是用户还是开发者,都需要对APK有一定的理解和操作能力,确保安全有效地使用和开发Android应用。而`...
在Android应用开发中,APK文件是应用程序的打包格式,其中包含了所有运行所需资源和代码。APK文件内部包含一个或多个DEX(Dalvik Executable)文件,这些DEX文件存储了Java字节码,经过优化后供Android的Dalvik或ART...
android 反编译 非常好用 主要功能: 1、反编译.apk 对.apk文件进行反编译。 2、重建.apk 根据反编译.apk得到目录重建.apk文件。 3、签名.apk 对.apk文件进行签名。... 将.dex文件转换为.jar文件。
在Android 5.0及以上版本,系统会预先优化这些.dex文件,以提高应用的启动速度和运行效率。 3. **资源文件**:包括各种图片、字符串、颜色、布局等资源,这些资源在运行时可以根据设备的屏幕尺寸、语言和其他特性...
《APK+Dex文件反编译及回编译工具》 简称:APKDB 是一款,针对Android OS系统的APK程序,直接反编译修改的工具。 APKDB集合了当今最强悍,最犀利的APK及Dex文件编译工具; 正常安装后,它直接在【鼠标右键】创建...
4. **APK文件**: ".apk" 是Android应用程序的安装包格式,包含了应用的所有代码、资源和元数据。用户可以直接安装APK来更新或安装应用。 5. **安装与更新**: 用户可以在设置中开启“未知来源”安装权限,然后通过...
二、合并odex和 少dex的apk 为完整的apk文件 1. 需要odex所在rom中的一些引用类,一般在 /system/framework 目录中 2 . 通过odex生成class文件 java -jar baksmali-1.2.6.jar -x android123.odex 执行完上面这...
1.首先把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件 2.把classes.dex拷贝到dex2jar.bat所在目录。 在DOS模式下运行:dex2jar.bat classes.dex(定位到dex2jar.bat所在目录)。生成classes.dex.dex2...
framework-res.apk是Android操作系统中的一个核心组件,它包含了Android系统的资源框架,是构建用户界面、图标、字符串等视觉元素的基础。这篇详细解释将深入探讨这个关键文件的作用、结构以及其在Android系统中的...
综上所述,"ANDROID ROOT.apk"是一个可能帮助用户为Android设备获取ROOT权限的应用,涉及到对系统文件的操作和权限提升,这些操作都需要谨慎对待,因为它们对设备的安全性和稳定性有重大影响。在尝试ROOT前,一定要...
这个应用可能涉及到图像处理、编辑或者与图片相关的服务,但具体功能需要通过解析APK文件来了解。 在网络安全方面,Android应用的安全性至关重要。攻击者可能通过恶意代码篡改APK,导致用户隐私泄露或设备被控制。...
最后一步:因为system.img中的apk是优化过的,apk主目录下是没有classes.dex文件的,而是一个被优化过的odex文件,用于优化启动速度。 因此需要将修改后的apk包再用dexopt-wrapper优化apk包后生成出odex文件,...
在Android系统中,`classes.dex`文件是Dalvik虚拟机执行的字节码文件,它包含了应用程序的所有类和方法。本教程将详细讲解如何处理和操作`classes.dex`文件,特别是针对`dex`的下载、解压以及使用Lua进行压缩。 1. ...
使用 Android SDK 提供的 `aapt` 工具或者第三方工具(如 Apktool)重新打包资源文件和修改后的 .dex 文件。之后,你需要使用密钥对新 .apk 进行签名,因为未签名的 .apk 无法在 Android 设备上安装。可以使用 ` ...
1.提取apk中的class.dex文件: 比如有apk文件:qq.apk,将其改名为qq.zip,然后解压,可以看到classes.dex。 2.解压"apk反编译工具.zip": 解压后,将classes.dex拷贝到该目录下,在命令行进入该目录,执行:dex2jar...
标题中的“FlyAndTrain.apk”与“CompareProduct.apk”是两个Android应用程序的APK文件,这表明我们要探讨的是Android应用开发相关的知识点。在Android系统中,APK是应用程序的打包格式,包含了代码、资源、配置文件...
首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar 文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2...
1、反编译.apk 对.apk文件进行反编译。 2、重建.apk 根据反编译.apk得到目录重建.apk文件。 3、签名.apk 对.apk文件进行签名。 4、优化.apk 对.apk文件进行优化。... 将.dex文件转换为.jar文件。