zoukankan      html  css  js  c++  java
  • APP-Android:APK

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

    格式定义

    在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会新建一个活动实例进程,因为它认为这是比较合适的,而游戏,可能只希望有一个活动的实例进程,这有一点儿影响,它需要了解一些系统状态的管理
    2、
    2. apk反编译返回顶部
    1、
    apk反编译就是通过使用apk编译工具,将apk文件中的源文件和资源反编译出来,得到的源文件和资源文件可以进行处理后再进行编译,以达到个性化定制、汉化apk等目的。 
    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替换现有的版本。 
    在下面的内容中将从三个方面介绍zipalign:
    1.zipalign如何优化
    2.如何使用zipalign
    3.使用zipalign的理由
    根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:  
    1.Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息。
    2.Home application读取当前APK的Name和Icon等信息。
    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工作原理的关键。 如果不采取对齐的标准,处理器无法准确和快速的在内存地址中定位相关资源。
    目前的系统中使用fallbackmechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者,无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源(battery life)。
    在Android SDK中提供了三种应用Align操作的方法:
    1.使用ADT
    从ADT 0.9.3版本开始,可以通过export wizard自动对发布的applicationpackages执行align操作。
    设置方法:鼠标右键点击Project,然后选择“Android Tools” > “ExportSigned Application Package…”。或者可以直接在AndroidManifest.xml中设置。
    2.使用Ant:
    对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。
    默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。
    针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。
    3.手动执行Align优化:
    利用tools文件夹下的zipalign工具。
    首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。
    这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
    同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。
    命令:zipalign -c -v 4 androidres.apk
    再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。
    2、
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    通过JDBC连接HiveServer2
    HDP-2.6.1安装
    VMWare虚拟机NAT模式静态IP联网配置
    基于ansj_seg和nlp-lang的简单nlp工具类
    修改ES使用root用户运行
    使用MapReduce将HDFS数据导入到HBase(三)
    HBase表操作
    使用SpringMVC解决Ajax跨域问题
    SpringBoot之Web开发——webjars&静态资源映射规则
    thymeleaf+springboot找不到html,只返回了字符串
  • 原文地址:https://www.cnblogs.com/storebook/p/9672794.html
Copyright © 2011-2022 走看看