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、
https://baike.baidu.com/item/apk
2、
6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/storebook/p/9672794.html

APP-Android:APK相关推荐

  1. Android:apk瘦身

    本文主要记录开发中apk瘦身用到的技术,apk中最占地方的是图片.so库.图片删除一定要慎重,尤其是反射调用的,编译没问题运行反而可能崩溃! 了解 APK 结构 APK 文件由一个 Zip 压缩文件组 ...

  2. Android:apk软件安装的数据路径

    注意 需要获取手机root权限 数据路径 /data/data/xxx/files,xxx是数据包名,可以在手机应用管理的应用详情中查看,如小米笔记的应用包名是:com.miui.notes 数据解包 ...

  3. Android中apk瘦身

    1. 结构分析 首先上传一张瘦身前通过Analyze app分析出来的图片(打开方式:Android Studio下 --> Build--> Analyze app): APK包结构如下 ...

  4. Java IO在Android中应用(三):Apk加固去壳

    Java I/O在Android中应用(三):Apk加固去壳 前言(废话) 现在在动车上,因为最近接到一个紧急的出差任务,需要去一趟江苏我们移动应用的客户现场.说真的,本来其实我是很困的,但是车上有一 ...

  5. android实现过程,Android:一个完整app开发流程

    一.给出功能文档 二.APP架构选择 可选MVP,MVVM 三.APP目录结构设置 本app基于mvp架构.除了mvp架构的文件. 还包含下面的文件夹: ui (下面根据Activity划分) wid ...

  6. Android App Bundle:动态功能模块

    目录 Android App Bundle 创建动态功能模块 动态功能模块 与主模块建立关联 部署应用 按需分发On-Demand 免安装分发 自 2021 年 8 月起,Google Play 将开 ...

  7. 转:将HTML5封装成android应用APK文件的几种方法

    https://www.cnblogs.com/kingboy2008/p/4465389.html 越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 ...

  8. Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

    前言:佛教中有一句话:初学者的心态,拥有初学者心态是件了不起的事情.真正的大师永远怀有一颗学徒的心. 一.概述 在Android中,性能优化是细分领域中最难且也是知识面涉及最深和最广的方向之一. 更快 ...

  9. [Android通信]基于socket的聊天app(七):好友分组

    参考链接:http://blog.csdn.net/way_ping_li/article/details/7995552 效果图: activity_main.xml <LinearLayou ...

  10. android app安装,Android App更新安装APK

    原标题:Android App更新安装APK 概要 一般地, Android App 都会被要求在App内进行软件更新提示, 让用户下载apk文件, 然后更新安装新版本, 一般过程如下: 检测是否有新 ...

最新文章

  1. Oracle执行SQL语句的过程
  2. Record和PL/SQL表
  3. python发邮件给女朋友代码_python发邮件的代码
  4. 《Unit Testing》2.1 伦敦学派如何做隔离
  5. di容器_DI容器是代码污染者
  6. 二进制文件签名_二进制数的签名表示
  7. 华为基于策略划分VLAN的配置方法及示例
  8. 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)
  9. Libevent 事件循环(1)
  10. POJ 2488 A Knight's Journey
  11. 微信小程序导航:官方文档+精品教程+demo集合(6月12日更新)
  12. Android签名方式
  13. ps排版html,排版教程,超详细适合初学者的排版教程
  14. centos7创建asm磁盘_centos7下安装oracle rac使用udev绑定磁盘方法
  15. 在线打开.mpp文件工具备忘录
  16. Spring Boot项目实例——简易版商城管理系统
  17. 揭秘三位图灵奖得主Hinton、LeCun、Bengio的传奇人生
  18. html文件在Chrome打开中文乱码
  19. Office 2010 博文征集开始 - 抢先下载 抢先得奖
  20. Matlab中的c2d函数用法以及绘制传函的Bode图

热门文章

  1. Github emoji 表情包大全
  2. vm虚拟机怎么访问本地硬盘
  3. alpha-beta剪枝算法
  4. PMP培训内容有哪些?都要仔细看!
  5. TF卡里删掉文件后内存没变大_电视装好kodi后打不开?播放原盘4K很卡?教你怎么解决...
  6. python成语接龙_python——成语接龙小游戏
  7. bat脚本变量赋值输出时提示”ECHO 处于关闭状态“
  8. ESP8266串口WiFi模块基本使用方法和配置教程
  9. .NET 配置系统未能初始化”异常
  10. Java学习day07-认识类和对象(单元测试Test)