精华内容
下载资源
问答
  • 主要介绍了Android studio 下的APK打包失败问题解决办法的相关资料,需要的朋友可以参考下
  • Apk打包解包工具v3.0+去广告SDK -- 用于安卓app的解包和打包。
  • APK打包解包签名 反编译软件和signapk签名软件,使APK格式的软件解包、打包和签名变的更方便和快捷,再也不用到目录里边去复制粘贴出来,或者拖拽和手动输入命令了!
  • 反编译apk,修改apk源码,并重新打包生成新的apk。反编译apk,修改apk源码,并重新打包生成新的apk
  • android apk打包工具

    2015-12-02 09:56:56
    解决android apk的批量打包,支持渠道号替换(字符串替换)、服务器地址替换、资源替换、指定文件修改、修改包名
  • APK打包解包工具

    2015-09-15 15:30:46
    APK打包解包工具,这个是手机版本,完全可以完美打包以安装apk
  • apk打包工具(java)

    2014-08-22 15:40:46
    java版的对apk进行打包的源码,需要的可以研究下
  • APK打包流程详解

    千次阅读 2019-11-10 02:00:14
    本文从宏观视角来看看APK文件结构及其设计思想,借助一个简单的“Hello Android”为例说明 APK文件结构 An APK file contains all of a program’s code (such as .dex file), resources, assets, certificates, ...

    本文从宏观视角来看看APK文件结构及其设计思想,借助一个简单的“Hello Android”为例说明

    APK文件结构

    An APK file contains all of a program’s code (such as .dex file), resources, assets, certificates, and manifest file.

    APK文件本身是个压缩文件,我们可以通过一个简单的Hello Android示例和一个复杂的应用,对比其对应的APK文件。
    首先新建一个简单的Hello Android项目,build出一个APK文件后拖到AS中利用自带的apkanalyzer打开,基本组成如图:
    Hello Android
    再打开一个下载好的比较复杂的APK(微信), 如图
    WeChat
    无论是简单的Hello world 还是复杂的WeChat,可以看出其主要组成包括:

    1. AndroidManifest.xml :用于声明应用包名信息、相关的使用权限、四大组件、android sdk版本等;
    2. res目录:包含程序主要资源文件,包括res/layout、res/drawable等,主要是布局文件和图片等资源。(微信是对资源做了混淆,字符串裁剪,上图中的r=res);
    3. resources.ars:资源映射表,包含一部分编译资源(res/value)和资源路径, 可以通过资源R.java中的ID映射到对应的资源文件或者值;
    4. assets目录:包含不被压缩的原始文件,主要是一些多媒体文件,或者附加文件;
    5. lib目录:使用到的各种.so链接库;
    6. Classes.dex:打包好的程序代码,如果是复杂的应用会进行分包,包含多个dex文件(微信);
    7. META-INF目录:主要包含APK的签名信息
      • MANIFEST.MF:清单文件,当前APK中所有文件清单及其对应hash值;
      • CERT.SF:上述清单文件中的每条信息的hash值;
      • CERT.RSA:对CERT.SF文件的数字签名以及签名时所用的数字证书;

    那这些文件到底是怎么生成的,接下来看看一个APK文件的构建流程。

    APK打包流程

    Android Studio默认采用gradle组织完成打包过程,对开发者来说简单的执行相关的task即可,这种透明的打包过程也让我们忽略了很多细节,这里我们以上述APK文件结构作为对照,来一窥源码结构变成最终的APK文件的过程。

    1. AndroidManifest.xml

    Hello Android为例,对比源码中的AndroidManifest.xml 与 APK中的AndroidManifest.xml 可以明显看出
    AndroidManifest
    会新增一些之类的标签,之前的theme、label等字符串被替换为具体的引用。这一过程发生在资源打包过程中,对这一过程不熟悉的可参考我之前的 资源打包流程, 简单说就是gradle在打包过程中会通过命令行启动 aapt工具,aapt在打包资源过程中会进行Merge Manifest,对AndroidManifest.xml文件进行修改。
    注意这里是通过AndroidStudio自带的分析器打开APK才能明确看到AndroidManifest.xml中的内容,如果只是简单的解压APK后AndroidManifest.xml被编译成了二进制文件。

    2. res/

    对比源码和打包后res目录的变化,也会发现res中的drawable中的图片等资源没有发生明显变化(其实会部分压缩),layout/下的xml文件也发生了类似AndroidManifest.xml的字符串替换和编译,变成了二进制文件,而values/不见了。对res/的处理也发生在aapt编译资源的过程中,对其中的xml文件进行编译和字符串裁剪,部分xml资源会被编译进resources.arsc。

    3. resources.arsc

    resources.arsc 也是个二进制文件,是aapt打包资源过程中的产物,同时伴随着上述资源文件的编译和压缩,其中res/value其实就编译进了resources.arsc, 其他的资源文件的id和路径对应关系也写进了这个文件,便于运行时访问。

    对资源打包和访问不太熟悉的可以参考:

    Android 资源框架:资源打包流程

    Android 资源框架:资源的运行时访问

    4. assets/

    目录中的文件未发生变化

    5. lib/

    无变化

    6. Classes.dex

    dex文件是Dalvik 和 ART 可执行格式。相较于JVM,dex将多个class文件打包到了一起,因此从Java文件到dex,需要经历java—>class–>dex的过程;

    • 如果用到了AIDL,通过sdk/build-tools/xxx/aidl 工具解析aidl文件,生成对应的Java文件;
    • Compile所有的 Java文件生成 .class文件;
    • 通过dx脚本,将所有class文件包括第三方Jar包等处理为dex文件,如果配置了multidex, 可能会生成多个classes.dex文件。dx及其他相关脚本位于sdk/build-tools/xxx/

    相较于class文件,dx工具在生成dex文件的过程中,会对字符常量池和一些冗余信息会进行压缩,结构上比class文件也更加紧凑。

    7. 打包及对齐处理

    通过apkbuilder工具,将aapt处理后的相关资源文件和利用dx处理生成的Classes.dex打包生成APK文件,apkbuilder工具也位于 sdk/build-tools/

    8. 对APK进行对齐处理

    借助zipalign工具,对APK文件进行对齐处理:

    zipalign 是一种归档对齐工具,可对 Android 应用文件进行重要的优化。其目的是要确保所有未压缩数据的开头均相对于文件开头部分执行特定的对齐。具体来说,它会使 APK 中的所有未压缩数据(例如图片或原始文件)在 4 字节边界上对齐。这样一来,即可使用 mmap() 直接访问所有部分,即使其中包含具有对齐限制的二进制数据也没关系。这样做的好处是可以减少运行应用时消耗的 RAM 容量。

    9.签名

    通过apksigner工具,对生成的APK文件进行签名;

    以上,我们就得到了一个包含 代码 + 资源 + 签名信息的可独立安装运行的APK文件。

    以上用到的相关脚本及工具均位于 sdk/build-tools/
    sdk build-tools
    具体的细节可参考其对应source code

    总结

    我们首先分析了一个基本的APK文件的组成部分,之后拆解了每一个组成文件的生成过程及其相关脚本。如果你对aaptdxapksigner的具体工作流程感兴趣,可以查找并阅读其源码。再来看官方打包流程图,相信你会更加清晰!

    apk build

    相关阅读:

    Android MultiDex 分包及加载原理

    Android 资源框架:资源打包流程

    Android 资源框架:资源的运行时访问

    展开全文
  • Apk 打包流程

    2020-03-16 16:53:28
    首先来看一张官网(最新)给的构建流程图...2、APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。 3、APK 打包器使用调试或发布密钥库签署您的 APK...

    官网(最新)给的构建流程图

    在这里插入图片描述
    1、编译器将源代码转换成 DEX(Dalvik Executable) 文件(其中包括运行在 Android 设备上的字节码),将所有其他内容转换成已编译资源。
    2、APK 打包器将 DEX 文件和已编译资源合并成单个 APK。不过,必须先签署 APK,才能将应用安装并部署到 Android 设备上。
    3、APK 打包器使用调试或发布密钥库签署您的 APK:

    • 如果您构建的是调试版本的应用(即专用于测试和分析的应用),打包器会使用调试密钥库签署您的应用。Android Studio 自动使用调试密钥库配置新项目。
    • 如果您构建的是打算向外发布的发布版本应用,打包器会使用发布密钥库签署您的应用。要创建发布密钥库,请阅读在 Android Studio 中签署您的应用

    4、在生成最终 APK 之前,打包器会使用 zipalign 工具对应用进行优化,减少其在设备上运行时的内存占用。

    再来看一张稍微详细一点(来自老版官网)

    在这里插入图片描述
    从上面的流程图,我们可以看出apk打包流程可以分为以下七步

    1、通过aapt打包res资源文件,生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样);
    • 打包资源的工具是aapt(The Android Asset Packaing Tool),位于android-sdk/platform-tools目录下。在这个过程中,项目中的AndroidManifest.xml文件和布局文件XML都会编译,然后生成相应的R.java。
    2、处理.aidl文件,生成对应的Java接口文件;
    • 这一过程中使用到的工具是aidl(Android Interface Definition Language),即Android接口描述语言。位于android-sdk/platform-tools目录下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。
    • 如果在项目没有使用到aidl文件,则可以跳过这一步。
    3、通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件;
    • 项目中所有的Java代码,包括R.java和.aidl文件,都会变Java编译器(javac)编译成.class文件,生成的class文件位于工程中的bin/classes目录下。
    4、通过dex命令,将.class文件和第三方库中的.class文件处理生成classes.dex;
    • dx工具生成可供Android系统Dalvik虚拟机执行的classes.dex文件,该工具位于android-sdk/platform-tools 目录下。
    • 任何第三方的libraries和.class文件都会被转换成.dex文件。
    • dx工具的主要工作是将Java字节码转成成Dalvik字节码、压缩常量池、消除冗余信息等。
    5、通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk;
    • 所有没有编译的资源(如images等)、编译过的资源和.dex文件都会被apkbuilder工具打包到最终的.apk文件中。
    • 打包的工具apkbuilder位于 android-sdk/tools目录下。apkbuilder为一个脚本文件,实际调用的是android-sdk/tools/lib/sdklib.jar文件中的com.android.sdklib.build.ApkbuilderMain类。
    6、通过Jarsigner工具,对上面的apk进行debug或release签名;
    • 一旦APK文件生成,它必须被签名才能被安装在设备上。

    • 在开发过程中,主要用到的就是两种签名的keystore。一种是用于调试的debug.keystore,它主要用于调试,在Eclipse或者Android Studio中直接run以后跑在手机上的就是使用的debug.keystore。另一种就是用于发布正式版本的keystore。

    7、通过zipalign工具,将签名后的apk进行对齐处理。
    • 如果你发布的apk是正式版的话,就必须对APK进行对齐处理,用到的工具是zipalign,它位于android-sdk/tools目录下。
    • 对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。
    • 对齐的作用就是减少运行时内存的使用。

    最后看张更详细的

    在这里插入图片描述
    参考:
    http://shinelw.com/2016/04/27/android-make-apk/
    https://juejin.im/entry/58b78d1b61ff4b006cd47e5b

    展开全文
  • APK打包流程

    千次阅读 2019-04-28 21:58:41
    本文将讲述Android APK的结构和打包流程。

    APK结构

    apk结构

    apk是一个压缩包,里面有lib,META-INF,classes.dex,res,resources.arsc文件夹和文件。下面看看它们各自的作用。

    名称内容详细
    lib放的是so动态链接库apk打包不需要处理的动态库
    META-INF签名文件夹三个签名证书(MANIFEST.MF、CERT.SF、CERT.RSA)。MANIFEST.MF文件是对每个文件的SHA-256-Digest;CERT.SF是对每个文件的头3行进行SHA-256-Digest;CERT.RSA这个文件保存了签名和公钥证书。
    classes.dex执行文件java编译后的Android可执行的dex文件
    AndroidManifest.xml声明文件记录应用的名字、版本、权限、引用的库文件等信息
    res资源文件有animator,anim,color,drawable,layout,menu,raw等文件夹
    resources.arsc编译后的二进制资源文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。 这是一个索引文件。

    初略流程

    build
    谷歌官方给出的打包流程图。
    先是把代码编译成Dex,然后是和资源文件整合成一个APK,再者加签名,最后出来之前还要用zipalign工具优化一下。

    细化流程

    详细打包流程
    上面这个图主要是有7个打包流程。

    1.打包资源文件,生成R.java文件

    aapt来打包res资源文件,生成R.java、resources.arsc和res文件。

    • res目录
    文件描述
    animator放属性动画
    anim放补间动画
    color颜色资源
    drawable存放XML、Bitmap文件,或者.png, .9.png, .jpg, .gif文件等图像资源。打包过程中可能会被优化,比如色彩数可能会被优化,256色变8色。
    layout布局资源,布局的xml文件。
    menu应用程序菜单
    raw直接复制到设备中的任意文件。用参数是资源的ID调用,R.raw.somefilename。和assets 不同的是,raw下面不能有目录,而和assets可以有目录。
    values数值XML文件用来描述数组、颜色、尺寸、字符串和样式值等
    xml应用配置信息
    • R.java文件
      R.java是我们在编写代码的时候会用到的,里面有静态内部类,资源等。
    • resources.arsc文件
      resources.arsc这个文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。是一个资源索引表,在给定资源ID和设备配置信息的情况下能快速找到资源。

    2.处理aidl文件,生成相应的Java文件

    aidl(Android Interface Definition Language,Android接口描述语言),位于android-sdk/platform-tools目录下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。如果项目没用到aidl则跳过这一步。

    3.编译项目源代码,生成class文件

    Java Compiler阶段。项目中所有的Java代码,包括R.java和.aidl文件,都会变Java编译器(javac)编译成.class文件,生成的class文件位于工程中的bin/classes目录下。

    4.转换所有的class文件,生成classes.dex文件

    dex阶段。通过dx工具,将.class文件和第三方库中的.class文件处理生成classes.dex文件。该工具位于android-sdk/platform-tools 目录下。dx工具的主要工作是将Java字节码转成成Dalvik字节码、压缩常量池、消除冗余信息等。

    5.打包生成APK文件

    apkbuilder阶段。通过apkbuilder工具,将aapt生成的resources.arsc和res文件、assets文件和classes.dex一起打包生成apk。打包的工具apkbuilder位于 android-sdk/tools目录下。

    6.对APK文件进行签名

    Jarsigner阶段。通过Jarsigner工具,对上面的apk进行debug或release签名。

    7. 对签名后的APK文件进行对齐处理

    通过zipalign工具,将签名后的apk进行对齐处理。工具位于android-sdk/tools目录下。对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。对齐的作用就是减少运行时内存的使用。

    总结一下

    详细打包流程。
    详细打包流程

    展开全文
  • Android APK打包流程

    万次阅读 2019-07-16 18:08:27
    今天主要讲一下Android程序的生成步骤,即Android打包APK的流程。 通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式: 用Eclipse或者Android Studio集成开发环境直接生成APK; 使用Ant...

    一、概述

    今天主要讲一下Android程序的生成步骤,即Android打包成APK的流程。

    通常情况下,在开发过程中打包APK是一件很简单的事,主要可以通过两种方式:

    • 用Eclipse或者Android Studio集成开发环境直接生成APK;
    • 使用Ant工具在命令行方式下打包APK。

    不过不管哪种方式,打包APK的本质过程都是一样的。

    APK文件: 其实就是一个压缩包,当你解压以后会发现它内部主要就是资源文件classes.dex,这个classes.dex就是Android系统Dalvik虚拟机的可执行文件。

    APK打包的流程图:
    在这里插入图片描述

    二、打包流程


    1、打包资源文件,生成R.java文件

    打包资源的工具是aapt(The Android Asset Packaing Tool),位于android-sdk/platform-tools目录下。在这个过程中,项目中的AndroidManifest.xml文件布局文件XML都会编译,然后生成相应的R.java

    2、处理aidl文件,生成相应的Java文件

    这一过程中使用到的工具是aidl(Android Interface Definition Language),即Android接口描述语言。位于android-sdk/platform-tools目录下。aidl工具解析接口定义文件然后生成相应的Java代码接口供程序调用。

    如果在项目没有使用到aidl文件,则可以跳过这一步。

    3、编译项目源代码,生成class文件

    项目中所有的Java代码,包括R.java.aidl文件,都会变Java编译器(javac)编译成.class文件,生成的class文件位于工程中的bin/classes目录下。

    4、转换所有的class文件,生成classes.dex文件

    dx工具生成可供Android系统Dalvik虚拟机执行的classes.dex文件,该工具位于android-sdk/platform-tools 目录下。

    任何第三方的libraries.class文件都会被转换成.dex文件

    dx工具的主要工作是将Java字节码转成成Dalvik字节码压缩常量池消除冗余信息等。

    5、打包生成APK文件

    所有没有编译的资源(如images等)编译过的资源和.dex文件都会被apkbuilder工具打包到最终的.apk文件中。

    打包的工具apkbuilder位于 android-sdk/tools目录下。apkbuilder为一个脚本文件,实际调用的是android-sdk/tools/lib/sdklib.jar文件中的com.android.sdklib.build.ApkbuilderMain类

    6、对APK文件进行签名

    一旦APK文件生成,它必须被签名才能被安装在设备上。

    在开发过程中,主要用到的就是两种签名的keystore。一种是用于调试的debug.keystore,它主要用于调试,在Eclipse或者Android Studio中直接run以后跑在手机上的就是使用的debug.keystore。另一种就是用于发布正式版本的keystore

    7、对签名后的APK文件进行对齐处理

    如果你发布的apk是正式版的话,就必须对APK进行对齐处理,用到的工具是zipalign,它位于android-sdk/tools目录下。

    对齐的主要过程是将APK包中所有的资源文件距离文件起始偏移为4字节整数倍,这样通过内存映射访问apk文件时的速度会更快。

    对齐的作用就是减少运行时内存的使用。

    展开全文
  • 安卓APK批量打包工具

    2018-05-09 11:00:42
    实现渠道号替换,各种资源替换,包名替换等等,完成开发者需要的各种需求。
  • apk打包工具

    2014-03-21 10:18:22
    简单易用的apk打包工具,可以很容易修改Android应用的图标。
  • APK签名打包文件

    2018-08-09 09:29:45
    用于APK签名打包时使用,下载后解压即可使用,使用方法可参照https://blog.csdn.net/m0_37203554/article/details/81530514
  • apk 打包工具

    2015-01-10 18:40:38
    一款好用的编译和反编译apk工具,并能重新反编译apk
  • HMTL一键打包APK工具可以把本地HTML项目或者网站打包为一个安卓应用APK文件,无需编写任何代码,也无需配置安卓开发环境,支持在最新的安卓设备上安装运行。最新版本1.6.1新增重置证书功能,并采用独享证书,可以...
  • APK反编译、APK打包

    2018-11-01 10:00:35
    APK反编译,更改AndroidManifest文件,然后直接打包APK
  • Android APK打包过程

    2020-04-13 21:37:39
    Android APK打包过程1.什么是APK2APK里面到底是什么3.AKP打包流程 1.什么是APK APK是 Android application package即安卓应用程序包的缩写,是能安卓运行在安卓操作系统的一种应用程序包文件格式。 在Android应用...
  • 360apk打包工具MCPTool使用方法1. 将apk文件放到MCPTool目录下2. 将apk文件拖拽到MCPTool.bat上3. 执行完成后会在当前目录下生成各个渠道的apk文件美团apk打包工具1.将需要打包的apk放在本目录下2.在本目录下进入...
  • 安卓APK打包签名

    万次阅读 2018-09-08 11:52:54
    上篇文章讲了打包签名问题,这边我来解释下。 key storepath:keystore文件路径 key store password :开启keystore文件的密码 key alias:key的别名 key password:key的密码 我们这里点击红色区域设置新的...
  • Android apk文件结构 打包编译的流程Android官网 配置构建 流程Configure your buildThe build processAPK文件结构assetsreslibMETA-INFAndroidManifest.xmlclasses.dexresources.arscAndroid完整打包流程详细介绍1....
  • Android之Apk打包原理

    千次阅读 2019-03-28 09:59:14
    APP打包过程中,用到的构建工具和构建的过程。 如下是一个apk解压后的目录,后面会提到每个目录在构建过程中是如何生成的。 AndroidManifest.xml 程序全局配置文件 classes.dex Dalvik字节码 resources....
  • Android apk打包流程: 通过aapt工具,将manifest文件编译后,生成manifest.java文件,为res目录下的资源生成R.java文件 并使用aidl工具,将aidl文件生成相应的java文件 通过javac工具,将项目中的业务逻辑的java...
  • 软件介绍: 安卓APK的一键式打包工具,使用起来非常容易,拖动APK文件到软件窗口中,将以此APK为基础进行打包,上方显示将要被打包的渠道,选择配置文件一键打包。可编辑渠道及配置文件名。
  • Android apk打包命名规则

    千次阅读 2018-11-12 14:21:56
    摘要:前言在日常的开发过程中,许多刚入行的开发者在apk打包命名、应用迭代版本的档案留存管理上都比较混乱——产生这些问题的原因无外乎以下两种:一是之前没有相关的操作经验、头尾不能兼顾;一是公司没有制定对应的...
  • 安卓apk在CentOS上自动化编译打包发布脚本, 支持阿里ECS和RDS, 详细使用请查看博客
  • 修改AAPT,资源分区,用于Android插件化- ... > Android多渠道打包 奇虎360 Android Multi channel package tool(安卓多渠道打包工具)- https://github.com/seven456/MultiChannelPackageTool 美团的Android...
  • android Apk打包过程概述_android是如何打包apk的

    万次阅读 多人点赞 2015-04-07 11:11:44
    流程概述:1、打包资源文件,生成R.java文件2、处理aidl文件,生成相应java 文件3、编译工程源代码,生成相应class 文件4、转换所有class文件,生成classes.dex文件5、打包生成apk6、对apk文件进行签名7、

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,656
精华内容 31,062
关键字:

apk打包