精华内容
下载资源
问答
  • APK 打包

    2014-06-26 15:33:22
    我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk"。将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装。Android系统要求具有其开发者签名的私人密钥的应用...

    做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android Package),其后缀名为".apk"。将APK文件直接上传到Android模拟器或Android手机中执行即可进行安装。Android系统要求具有其开发者签名的私人密钥的应用程序才能够被安装。生成数字签名以及打包项目成APK都可以采用命令行的方式,但是通过Eclipse中的向导我们会更加方便地完成整个流程,打包发布的过程非常简单。下面以前面开发的"Hello World"为例,演示如何生成APK。

    右键单击项目名称,选择"Android Tools",再选择"Export Signed Application Package…",如下图所示。

     

    进入左图所示页面,单击"Next>"按钮,进入如右图所示窗口。
     

    其中,Location为证书库将要存放的位置,Password是证书库的密码。

    打包程序时,系统要求使用数字证书。如果没有数字证书,我们选择"Create new keystore"新创建一个证书库,单击"Browse…"按钮选择证书库将要保存的位置并填入信息,如左图所示。单击"Next>"按钮,如右图所示。

     

    其中,Alias是该证书的名字;password是该证书的密码;Validity是指定证书有效年份。

    如果已经拥有一个证书,那么可以选择"Use existing keystore",之后直接定位到证书库的位置并填入密码,如左图所示,接下来填入密码,单击"Next>"按钮,如右图所示。

     
    单击"Browse…"按钮,选择文件保存的位置,如下图所示。
     

    "Destination APK file "指定APK存储的位置。单击"Finish"按钮,打包完成。

    进入"D:\My Document",会看到生成的HelloWorld.apk以及sharpandroid证书库。

    我们可以把HelloWorld.apk文件发布到Internet上,也可以将该文件发布到Google的Android Market中,别人就可以下载它,并安装到手机上去。

    展开全文
  • 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-09 12:23:33
    apk打包签名工具(autosign.rar),有需要的@我,支持技术开源交流

    apk打包签名工具(autosign.rar),有需要的@我,支持技术开源交流

    注:技术交流QQ群-595892258

    展开全文
  • apk打包流程

    千次阅读 2017-08-16 08:27:57
    lib 文件夹里面存放的是so动态链接库,so动态链接库是不需要做处理做apk打包一些列压缩处理的。 META-INF 签名文件夹,里面存放三个文件,有两个是对资源文件做的SHA1 hash处理,一个是签名和公钥证书。 res 资源...

    1、导读

    .apk文件其实就是一个压缩文件,把文件的后缀改成.zip就可以用windows解压软件解压了。
    这里写图片描述
    这是一个apk文件改成zip文件解压后的样子:

    • lib 文件夹里面存放的是so动态链接库,so动态链接库是不需要做处理做apk打包一些列压缩处理的。
    • META-INF 签名文件夹,里面存放三个文件,有两个是对资源文件做的SHA1 hash处理,一个是签名和公钥证书。
    • res 资源文件夹,里面还会分animator,anim,color,drawable,layout,menu和raw这几个文件夹。
    • AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)。这个文件是很重要的,里面有我们的Android四大组件和申请的权限。
    • classes.dex Android平台上的可执行文件,Android虚拟机Dalvik支持的字节码文件格式Google在新发布的Android平台上使用了自己的Dalvik虚拟机来定义, 这种虚拟机执行的并非Java字节码, 而是另一种字节码: dex格式的字节码。在编译Java代码之后,通过Android平台上的工具可以将Java字节码转换成Dex字节码。虽然Google称Dalvik是为了移动设备定做的,但是业界很多人认为这是为了规避向sun申请Javalicense。这个DalvikVM针对手机程式/CPU做过最佳化,可以同时执行许多VM而不会占用太多Resource。classes.dex也是由java的class文件重新编排而来,我们也可以通过反编译工具把dex文件转换成class文件。如果做了拆包那么会有classes1.dex,classes2.dex …多个classes.dex文件。

    • resources.arsc 这个文件记录了所有的应用程序资源目录的信息,包括每一个资源名称、类型、值、ID以及所配置的维度信息。我们可以将这个resources.arsc文件想象成是一个资源索引表,这个资源索引表在给定资源ID和设备配置信息的情况下,能够在应用程序的资源目录中快速地找到最匹配的资源。

    2、打包流程图

    下面是Google官方给的简易版本的打包流程图:
    这里写图片描述
    虚线方框里是打包apk的操作,现在开发Android app用的都是、Android Studio基于gradle来构建项目,所有的打包操作都是执行gradle脚本来完成的,gradle编译脚本具有强大的功能,我们在在里面完成多渠道,多版本,不同版本使用不同代码不同资源,复制编译后的文件重命名,混淆签名验证等等配置,虽然都是基于AndroidSdk的platform-tools文件夹下面的工具来完成的,但是有了gradle这个配置文件,这一切的流程就显得可视化,可拓展,可操作!

    下面是详细的打包流程图:
    这里写图片描述
    无论我们怎么配置gradle文件去自定义打包,但是都是要走上图所话的七个流程,七个深绿色的椭圆代表了七个不可获取的打包步骤,同是每一个步骤都有一个打包工具!

    工具名称 功能介绍 在操作系统中的路径
    aapt Android资源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt
    aidl Android接口描述语言转化为.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl
    javac Java Compiler java代码转class文件 ${JDK_HOME}/javac或/usr/bin/javac
    dex 转化.class文件为Davik VM能识别的.dex文件 ${ANDROID_SDK_HOME}/platform-tools/dx
    apkbuilder 生成apk包 ${ANDROID_SDK_HOME}/tools/opkbuilder
    jarsigner .jar文件的签名工具 ${JDK_HOME}/jarsigner或/usr/bin/jarsigner
    zipalign 字节码对齐工具 ${ANDROID_SDK_HOME}/tools/zipalign

    下面依次详解这七个步骤。

    3、apk打包7个步骤

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

    使用aapt来打包res资源文件,生成R.java、resources.arsc和res文件,R.java文件是所有res资源的id列表,R.java是我们在编写代码的时候会用到的,我们经常R.drawable.icon之类的来引用工程中的资源文件。
    这里写图片描述
    resources.arsc也是清单文件,但是resources.arsc跟R.java区别是非常大的,R.java里面只是id值列表,而且里面的id值不重复。但是我们drawable-hdpi、drawable-xdpi或者drawable-xxdpi这些不同分辨率的文件夹存放的图片的名称和id是一样的,在运行的时候是怎么根据设备的分辨率来选择对应分辨率的图片的呢?这就要靠我们的resources.arsc文件了,resources.arsc里面会对所有的资源id进行组装,在apk运行时获取资源的时候会根据设备的情况获得不同的资源。

    resources.arsc文件的作用就是通过一样的ID,根据不同的配置索引到最佳的资源显示在UI中。

    resources.arsc文件详解请看:http://www.jianshu.com/p/3cc131db2002
    R.java是我们在写代码时候引用res资源的id表,resources.arsc是程序在运行时候的用到的资源表。R.java是程序员读的,resources.arsc是机器读的!不知道我的这个理解对不对?
    appt在打包资源文件之前会检测AndroidManifest.xml的合法性,对res目录下的资源子目录进行处理,处理的内容包括资源文件名的合法性,这就是有时候为什么我们的资源命名有问题的时候Android Studio会直接报错无法编译!
    另外xml文件内容都会被编译成 二进制的,这也是我们无法直接打开apk解压后其中的xml文件。

    3.2、处理aidl文件,生成相应的java文件

    AIDL (Android Interface Definition Language), Android接口定义语言,Android提供的IPC (Inter Process Communication,进程间通信)的一种独特实现。这个阶段处理.aidl文件,生成对应的Java接口文件。

    3.3、编译工程源代码,生成相应的class文件

    通过Java Compiler编译R.java、Java接口文件、Java源文件,生成.class文件。如果有配置混淆的话,会编译成混淆的class文件,方便源代码被偷看。

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

    Android系统的Dalvik虚拟机的可执行文件为DEX格式,程序运行所需的class.dex就是在这一步生成的,使用到的工具为dx,它位于android-sdk\platform-tools目录下,dx工具主要的工作是将java字节码转换为Dalvik字节码、压缩常量池、消除冗余信息等。

    3.5、打包生成apk文件

    将classes.dex、resources.arsc、res文件夹(res/raw资源被原装不动地打包进APK之外,其它的资源都会被编译或者处理)、Other Resources(assets文件夹)、AndroidManifest.xml打包成apk文件。
    注意:
    res/raw和assets的相同点:
    1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
    res/raw和assets的不同点:
    1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
    2.res/raw不可以有目录结构,而assets则可以有目录结构,也就是assets目录下可以再建立文件夹

    3.6、对apk文件进行签名

    对apk进行签名,可以进行Debug和Release 签名。Debug签名是Android Studio默认的,Release 签名是需要我们自己配置的。

    3.7、对签名后的apk文件进行对对齐处理

    release mode 下使用 aipalign进行align,即对签名后的apk进行对齐处理。
    Zipalign是一个android平台上整理APK文件的工具,它对apk中未压缩的数据进行4字节对齐,对齐后就可以使用mmap函数读取文件,可以像读取内存一样对普通文件进行操作。如果没有4字节对齐,就必须显式的读取,这样比较缓慢并且会耗费额外的内存。
    在 Android SDK 中包含一个名为 “zipalign” 的工具,它能够对打包后的 app 进行优化。 其位于 SDK 的 build-tools 目录下, 例如: D:\Develop\Android\sdk\build-tools\23.0.2\zipalign.exe

    参考文章:
    Android应用程序(APK)的编译打包过程
    Android 打包过程
    Android-Studio配置构建
    Android6.0之App中的资源Rsources.arsc详解
    android 打包流程

    展开全文
  • 反编译apk,修改apk源码,并重新打包生成新的apk。反编译apk,修改apk源码,并重新打包生成新的apk
  • 最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程。   流程概述: 1、打包资源文件,生成R.java文件 2...
  • 从源码到apk——apk打包过程

    千次阅读 2018-04-07 10:09:42
    从源码到apk——apk打包过程Android程序是怎么从源码变成可以安装使用的apk的流程官方版详细版上面就是一个关于构建过程的一个典型的流程图。aapt(AndroidAssetPackagingTool)给你的Activity提供所需的资源文件,如...
  • CMD安装卸载apk: apk打包发布:
  • apk打包解包签名工具apktool

    热门讨论 2012-02-20 09:25:36
    apk打包,解包,反编译,签名, 图形化界面,不用敲命令,方便实用
  • apk打包流程图

    2014-03-03 13:45:14
    apk打包流程图
  • Android apk打包命名规则

    千次阅读 2018-11-12 14:21:56
    摘要:前言在日常的开发过程中,许多刚入行的开发者在apk打包命名、应用迭代版本的档案留存管理上都比较混乱——产生这些问题的原因无外乎以下两种:一是之前没有相关的操作经验、头尾不能兼顾;一是公司没有制定对应的...
  • 最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程。 流程概述: 1、打包资源文件,生成R.java文件...
  • 最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程。流程概述: 1、打包资源文件,生成R.java文件 2、处理...
  • Android APK打包流程

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

    千次阅读 2019-04-28 21:58:41
    本文将讲述Android APK的结构和打包流程。
  • Generate Signed APK 打包 release 的APK安装失败 昨天项目演示,结果出现了一个前面没有遇到过的问题,通过Generate Signed APK创建的签名文件打包APK在手机上安装失败,即时是第一次安装也会安装失败。 其实...
  • Android Studio修改Apk打包生成名称 Android studio默认生成的apk的名字实在是太没有辨识度了,一般默认是app-debug.apk,app-release.apk这样的命名,自己有些强迫症,受不了这种命名。 目前已经是2019年下半年了,...
  • 使用Android Studio进行APK打包做完一个Android项目后,我们需要将自己的程序打包成Android安装包文件–APK(Android Package),后缀名为 .apk。但是,只有具有开发者签名的应用程序才能被安装,鉴于APK签名文件的...
  • Android studio release apk打包报错汇总

    千次阅读 2019-05-07 18:02:44
    Android studio release apk打包报错汇总 总结一下打包apk报错的原因 错误一 报错信息 AGPBI: {“kind”:“error”,“text”:“No resource identifier found for attribute \u0027appComponentFactory\u0027 in...
  • 用Android Studio 打包App时...若想自定义apk打包名称,可在APP下的build.gradle文件添加以下代码: 代码如下: 第一步,在build.gradle的Android{}上面设置需要生成的时间格式def releaseTime() { return new Dat
  • APK 打包:debug模式安装问题

    千次阅读 2019-06-14 09:52:07
    apk打包时分俩种模式:release模式发布版本,debug模式 测试程序。俩这区别在此就不过多讲解。 解决办法: 1、对于客户:大部分android 设备 可以通过 adb install -t <apk>的方式安装debug模式包。其他...
  • 以下是Google官方的apk打包流程图,这个流程图很容易看懂,我们可以看到apk打包过程中需要用到的工具有java、aapt、aidl、dx、apksigner、zipalign。那么这些工具都在哪里呢?
  • APK 打包过程

    2016-12-06 23:10:39
    最近在做APK安装包缩减工作,所以对APK整个打包过程进行了解下。
  • android平台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打包解包签名工具apktool.rar

    热门讨论 2011-10-27 10:39:40
    apk打包,解包,反编译,签名, 图形化界面,不用敲命令,方便实用
  • 安卓APK打包签名

    万次阅读 2018-09-08 11:52:54
    上篇文章讲了打包签名问题,这边我来解释下。 key storepath:keystore文件路径 key store password :开启keystore文件的密码 key alias:key的别名 key password:key的密码 我们这里点击红色区域设置新的...
  • Android apk打包流程: 通过aapt工具,将manifest文件编译后,生成manifest.java文件,为res目录下的资源生成R.java文件 并使用aidl工具,将aidl文件生成相应的java文件 通过javac工具,将项目中的业务逻辑的java...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,524
精华内容 6,209
关键字:

apk打包