2017-12-27apk

apk

编辑

APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似SymbianSis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把androidsdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。

外文名

AndroidPackage

分    类

文件格式

用    途

安卓安装包

缩    写

apk

目录

1文件格式

格式定义

文件结构

开发环境

2apk反编译

文件格式

编辑

格式定义

在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。安装的文件可能不是这个文件夹,而在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有着root权限。

文件结构

1. META-INF\ (注:Jar文件中常可以看到);

2. res\ (注:存放资源文件的目录) ;

3. AndroidManifest.xml (注:程序全局配置文件) ;

4. classes.dex (注:Dalvik字节码);

5. resources.arsc (注:编译后的二进制资源文件)。

开发环境

Android是一个基于Java的开发环境,它是一种与广被接受的 Java极为类似,而且也比C++容易得多的开发语言,这是一种规范的移动开发环境。Google也在API文档的书写和样例的提供上做了很出色的工作。

获取SDK

下载并安装android的SDK[软件开发套件],这套SDK主要包括有核心库文件,一个模拟器,开发工具和一些示范的样例文件。推荐使用Eclipse 和androideclipse 扩展。如果只是使用android,Eclipse IDE就已经足够了,但如果是第一次开发Java应用,建议下载完整的Java SE 开发工具 (JDK) 因为它包括签发应用程序所需要的工具。

应用架构

android应用架构很关键,如果不学习它,设计出来的游戏将是一种很难修复bug的产品。 需要了解应用程序、活动、Intents以及它们是如何互相联系交互的,Google在这儿提供了良好的信息架构。真正重要的是,要理解为什么在设计的游戏中需要不止一个的活动进程以及如何设计一个用户体验良好的游戏。这些都应当配合到应用的生命周期中。

应用的生命周期

应用的生命周期是由AndroidOS操作系统进行管理的活动进程都将做为系统命令进行创建,正确处理这些事件对一个应用程序来说是极为重要的,因为终端用户不会知道什么是正确的。最好在开始设计游戏之前搞明白这些,因为这有助于节省调试时间以及避免代价高昂的重新设计。对大多数应用而言,默认设置即可开始工作,但对游戏而言,可能需要调整单态实例的信号为打开。在默认情况下,Android会新建一个活动实例进程,因为它认为这是比较合适的,而游戏,可能只希望有一个活动的实例进程,这有一点儿影响,它需要了解一些系统状态的管理。

apk反编译

编辑

apk反编译就是通过使用apk编译工具将apk文件中的源文件和资源反编译出来,得到的源文件和资源文件可以进行处理后再进行编译,以达到个性化定制,汉化apk等目的。[1]

apk反编译工具

1、最典型的apk编译工具的核心是apktool,但是因为操作需要调用cmd命令,所以出现了很多具有可视化界面的各种编译工具,像easyapk,apkdb,doapk

2、dex2jar.jar,将apk中的classes.dex转化成Jar文件,再通过jd-gui工具反编译jar文件。

apk编译方法

使用apkdb编译apk文件只需要在安装apkdb后直接右击反编译就可以将apk文件反编译出来

1、使用原生apktool工具,需要将apktool的两个文件释放到window目录下,在cmd中使用 apktool d apk文件名 命令来编译apk文件,此时命令行的执行目录与apk文件所在目录必须一致。

2、首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,运行

dex2jar.bat classes.dex。

Android SDK中包含了一个用于优化APK的新工具zipalign。它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”,Android小组重新为Applications与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。[2]

在下面的内容中将从三个方面介绍zipalign:

1、zipalign如何优化

2、如何使用zipalign

3、使用zipalign的理由

根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:[2]

1、Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息。

2、Home application读取当前APK的Name和Icon等信息。[2]

3、System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。

4、最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资源的可复用性。[2]

zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure alignment(数据结构对齐标准:DSA)限定为4-byte boundaries。如果第一次接触有关Data structurealignment的内容,强烈建议搜索更多与其相关的内容来充分理解这样做的最终目的,这也是理解zipalign工作原理的关键。 如果不采取对齐的标准,处理器无法准确和快速的在内存地址中定位相关资源。[2]

目前的系统中使用fallbackmechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源(battery life)。[2]

在Android SDK中提供了三种应用Align操作的方法:

1、使用ADT

从ADT 0.9.3版本开始,可以通过export wizard自动对发布的applicationpackages执行align操作。设置方法:鼠标右键点击Project,然后选择”Android Tools” > “ExportSigned Application Package…”。或者可以直接在AndroidManifest.xml中设置。[2]

2、使用Ant:

对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。[2]

默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。[2]

针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。[2]

3、手动执行Align优化:

利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。[2]

同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk

再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。[2]

Android

开发Android 软件开发工具包Apache AntDalvikDeveloper Challenge

EclipseGoogle CodeGoogle App InventorGoogle I/O

BionicAPKRoboto快速启动

使用者接口HTC SenseMotorola MotoblurSamsung TouchWizSony UXP Experience

应用程式地球GogglesGmail地图

星空Talk翻译Voice

YouTube

服务Google PlayGoogle搜索Android云端推送(C2DM)

Google NexusNexus OneNexus SGalaxy NexusNexus 7

Nexus Q

第三方固件CyanogenModMIUIInsertCoin

衍生平台MIUIOPhone百度易平台Replicant

Le OS阿里云OSFlyme OS

列表Android相关主题Android装置列表Android版本历史Android开源应用

其他Root机

参考资料

1.几款APK反编译工具介绍 .安卓软件开发网[引用日期2013-04-23]

2.Android APK优化工具Zipalign详解 .Android开发网[引用日期2015-10-26

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容