`
pipisky
  • 浏览: 2325 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
阅读更多
apk文件,即Android application package文件。

每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。APK文件其实是zip格式,但后缀名被修改为apk,
在Android 系统安装时,APK 程序会被存放在系统默认的APP 目录中。

既然是一个Zip压缩包,那我们就不妨先解压出来看看其目录结构和内容,在我这我以NDK中的two-libs为例,以NDK为例,主要是要在本文中介绍SDK和NDK结合打包的方法。先看图:


其实这个目录结构与源代码的目录结构类似,接下来我们对比看看源代码(我用的是eclipse):

看见没有,几乎就是一样的!接下来挨个介绍下apk中个文件及目录的内容和作用吧,一下资料来源于网络和官方文档当然还有个人理解。

•AndroidManifest.xml
该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具[ , ]解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml

•META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。
•res目录
      res目录存放资源文件。包括图片,字符串等等。
•lib目录
lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了,呵呵呵!

•assets目录
assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java中。同理,asset也可以放置其他文件。

•classes.dex文件
      classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。
•resources.arsc
      编译后的二进制资源文件

其中其他的res下的资源文件也可以完全的无缝的反编译出来,所以拿到一个优秀的软件我们在看布局更方便了,首先可以通过布局查看器来看布局,甚者就可以把他的layout都反编译出来,但这样也有些安全问题,不通过二进制存储的资源可以直接被替换。

对于更详细的换肤,详见
http://xy0811.spaces.live.com/Blog/cns!F8AECD2A067A6B17!1513.entry

分享到:
评论
1 楼 王山而 2010-07-13  
图片没有加进来啊,期待。。。。。

相关推荐

    APK包名查看软件工具

    APK包名查看软件工具是一种专门针对Android应用的实用程序,它的主要功能是帮助用户获取APK安装包的包名信息。在Android开发过程中,包名(Package Name)扮演着至关重要的角色,它是应用程序的唯一标识,类似于...

    APK包名查看器(APK信息查看器)

    标题中的“APK包名查看器”是一款专用于查看Android应用程序(APK)包名的工具,它允许用户在电脑上无需安装额外的管理软件就能获取APK的相关信息。描述中提到,用户通常可能需要这样的工具来快速查看APK的包名,而...

    安卓Apk包名信息查看工具

    在Android开发过程中,Apk包是应用程序的可执行文件,包含了所有代码、资源以及应用运行所需的元数据。了解Apk包的信息,如包名、版本号等,对开发者来说至关重要。"安卓Apk包名信息查看工具"是一款专为PC用户设计的...

    获取第三方APK包名,启动类名

    首先,我们要理解什么是APK包名。APK包名是Android应用程序的唯一标识符,通常格式为`com.example.myapp`,它由开发者定义,并在AndroidManifest.xml文件中指定。包名用于区分系统中的不同应用,避免命名冲突。 **...

    apk打包解包工具

    在Android开发领域,APK是应用的安装包格式,相当于iOS中的IPA文件。"apk打包解包工具"是一类用于处理APK文件的实用程序,它们可以帮助开发者进行APK的构建、拆解、修改和重新签名等操作。下面将详细阐述相关知识点...

    apk包解包工具,可以用来获取游戏包中的资源

    标题中的“apk包解包工具”是指用于分析和提取Android应用程序(APK)资源的软件。这类工具允许用户查看、修改或提取APK文件内的图片、音频、布局文件等资源,对于开发者而言,它们是调试、逆向工程或二次开发的重要...

    android apk打包工具

    在Android应用开发中,APK打包是发布应用的最后步骤,它将编译后的代码、资源文件、配置信息等组合成一个可安装的文件。"Android APK打包工具"旨在简化这个过程,尤其对于需要批量打包或者针对不同渠道进行个性化...

    获取apk包名,版本号等信息的jar包

    在Android开发过程中,有时我们需要获取APK包的相关信息,如包名、版本代码(versionCode)、版本名称(versionName)等。这些信息对于版本管理和应用更新检查至关重要。本篇文章将详细解析如何使用Java来获取未安装...

    Android 获取手机所有apk包名

    在Android平台上,获取手机上所有APK包名的需求通常是用于分析设备上安装的应用程序信息,例如统计应用数量、分析特定应用是否存在或者进行批量操作。这个过程涉及到对Android系统的权限访问以及对文件系统的操作。...

    getPackageName.bat 可批量获取apk包名,getSign.bat可获取apk MD5和SHA1,记录一下以防丢失

    在Android应用开发中,了解APK包名和签名信息是非常重要的。APK包名是应用程序的唯一标识,而MD5和SHA1则是用于验证APK文件完整性和安全性的哈希值。下面,我们将深入探讨这两个批处理脚本——`getPackageName.bat` ...

    Android 360apk 美团apk打包工具.zip

     执行完成后会在当前目录下生成各个渠道的apk文件美团apk打包工具1.将需要打包的apk放在本目录下2.在本目录下进入dos3.执行 python MultiChannelBuildTool.py命令4.命令执行完毕后会生成一个文件夹,里面存放的...

    查看Android apk包信息

    了解如何查看APK包信息对于开发者和用户来说都非常重要,因为这有助于理解应用的特性、安全性和兼容性。下面我们将深入探讨如何查看Android APK包的各类信息。 首先,让我们来看看“包名”(Package Name)。包名是...

    Java解析apk包

    在Android开发中,APK包是应用程序的二进制文件,包含了应用的代码、资源、配置等所有必要的组件。Java解析APK包是一项常见的技术,主要用于逆向工程、安全分析或者自动化工具的实现。当我们遇到Java解析APK时桌面...

    apk包名类名查看工具.exe

    apk 包名,版本信息查看工具,只在自己电脑win7上用,其他平台没用过

    android应用APK打包签名方法文档

    ### Android应用APK打包签名方法详解 #### 一、引言 在Android开发过程中,APK的打包与签名是一项至关重要的环节。无论是开发者在本地测试应用,还是将应用提交到Google Play商店,都需要确保APK文件正确地进行了...

    安卓apk包安全码校对

    在Android应用开发中,APK包是应用程序的安装文件,其安全性对于用户数据和个人隐私的保护至关重要。"安卓apk包安全码校对"是确保APK包完整性和未被篡改的重要步骤。APK包的安全码,通常指的是其数字签名中的SHA1...

    APK打包解包工具

    APK打包解包工具,这个是手机版本,完全可以完美打包以安装apk

    自动更换apk包名PHP网站源码

    5.上传apk的如果有加固或锁定apk包名第三方不能使用此程序功能请注意 安装教程 环境 mysql5.6 1. 直接终端命令 yum install java-1.8.0-openjdk.x86_64 2.执行完直接直接查看版本 java -version 数据库...

    易语言apk查看器源码分享 [超级强大]安卓apk包名和类名查看器 专业查看APK的工具 apk包名查看

    易语言apk查看器是一款强大的APK分析工具,主要用于查看安卓应用程序(APK)的基本信息,如包名和类名。这款工具对开发者和逆向工程人员尤其有用,他们需要深入理解APK的内部结构以便进行调试、优化或者安全分析。 ...

Global site tag (gtag.js) - Google Analytics