aapt: android application package tool,SDK

(Android打包流程图)

#Android打包流程

1.通过aapt工具将 资源文件(res)、清单文件(AndroidManifest.xml)生成对应的R.java文件

* 在项目的根目录下新建 gen目录,并且依次在gen目录下新建清单文件总包名对应的文件目录

> 例如: 清单文件中包名是org.zdc.android,那么就在gen目录中新建目录结构为

> gen/org/zdc/android

* 通过命令生成R.java

aapt package -f -m -J [gen目录] -S [res目录] -I [android.jar目录] -M [AndroidManifest.xml目录]

2. 通过aidl工具 将 aidl文件转化为java文件

aidl -I[src目录] -p[aidl框架环境文件(framework.aidl)] -o[aidl输出目录(gen)] [要转换的aidl文件(your.aidl)]

3. 通过javac工具,将*.java文件转化为*.class文件

javac -encoding [编码] -target [版本(1.6 or 1.7)] -bootclasspath [android.jar] -cp [依赖的jar(多个用;隔开;结尾)] -d [class文件输出目录] [要编译的java文件(多个用空格分开)]

4. 将libs下的jar解压到输出目录中

jar xvf [jar文件]

5. 通过dex命令 将class文件转换为dex文件

dx.bat --dex --output=[全路径的输出文件(classes.dex)] [全路径的class文件对应的目录]

> [全路径的class文件对应的目录] : 如果此目录依赖了其他的jar文件,需要用 `|`分隔开

> 命令: dex.bat --dex --output=输出路径 需要转换的class文件对应的路径

6. 通过aapt工具生成资源文件包

aapt package -f -M [清单文件(AndroidManifest.xml)] -S [资源文件目录(res)] -A [资产文件目录(assets)] -I [android环境jar(android.jar)] -F [输出的文件(resoures.ap_)]

7. 生成未签名的apk安装文件

apkbuilder [apk输出路径] -u -z [打包好的资源文件全路径] -f [全路径dex文件]  -rf  [src全路径]  -rj  [全路径的libs目录]

8. 生成签名的apk安装文件

* 生成签名文件

keytool -genkeypair -alias zdc -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore zdc.keystore

>  -alias : 签名的别名

>  -validity : 签名的时效

>  -keyalg : 加密的算法,一般都用RSA

>  -keystore : 生成的签名路径

>  -keypass : 密钥库的密码

>  -storepass :密钥的密码

* 通过签名文件给apk文件进行签名

jarsigner -keystore 签名文件 -keypass 签名密码 -storepass 签名文件的密码 -signedjar 生成的签名文件 未签名的文件 签名的别名

# 命令详解

* package 命令: 打包编译android资源

aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \

[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \

[--min-sdk-version VAL] [--target-sdk-version VAL] \

[--max-sdk-version VAL] [--app-version VAL] \

[--app-version-name TEXT] [--custom-package VAL] \

[-I base-package [-I base-package ...]] \

[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \

[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] \

[raw-files-dir [raw-files-dir] ...]

> []的参数都是可选参数。

> __[-d]:  指定一个或多个设备的资源文件被添加,多个资源文件用逗号隔开__

> __[-f]:  是否覆盖已经存在的文件(添加此参数即为覆盖,否则不覆盖)__

> __[-m]:  打包资源的文件目录,目录地址是`-J`参数指定__

> __[-J]:  知道R文件生成的目录__

> __[-S]:  需要打包的资源文件目录__

> __[-I]:  指定环境android.jar的文件目录__

> __[-M]:  清单文件的路径__

#指令打包之R文件生成

1、API文档路径:

develop  ->  tools  ->  buid system(打包系统,主要介绍打包的原理过程)  ->  查看流程图

2、AAPT:Android Application Package Tool  android应用打包工具

路径:sdk -> buildtools – 版本 -> aapt

操作步骤:

①配置java环境,建议使用JDK1.6,因为JDK1.7/1.8对指令操作有缺陷。

②拷贝工程到CMD文件夹(自己创建),删除工程中自动生成的目录和文件(.setting、bin、gen、.classpath、.project)。

3、使用指令进行操作

①在当前工程根目录下中创建gen目录,在gen目录下根据工程包名创建不同的目录。

②CMD指令进入到当前工程的目录下

③执行命令

aapt package -f -m -J gen -S res -I ...\sdk\platforms\android-16\android.jar -M AndroidManifest.xml

#.aidl转java文件

1、工具指令路径:sdk -> platform-tools -> aidl.exe

2、framework.aidl路径:sdk -> platforms -> android-14 –>framework.aidl

3、使用指令

aidl -Isrc -pD:\...\sdk\platforms\android-16\framework.aidl -ogen 项目路径\src\aidl目录\ITelephony.aidl

注意:有的aidl不会产生java文件

#指令打包之java转class

1、Application source code:应用源码,指的就是我们工程中.java文件,比如src下的文件等等。

2、Java Compiler:java编译器,R.java、Application source code和java InterFaces是通过java编译器编译成.class文件的

3、操作指令:

①在工程的根目录下创建bin目录,在bin目录中classes目录

②使用指令进行操作

javac -encoding utf-8 -bootclasspath D:\...\sdk\platforms\android-16\android.jar -cp libs\android-support-v4.jar; -d bin\classes .\gen\cn\zdc\packagedemo\R.java

4、解压jar包

因为jar包或者库文件也在我们工程中的,所以在转化的时候需要将jar包或者库文件中的class文件一起转化成dex

①进入到bin目录下的classes目录下

②使用指令(两个依次使用)

jar xvf ..\..\libs\nineoldandroids-2.4.0.jar

#指令打包之class转dex

1、将class文件转化成dex文件

①使用指令进入到工程的bin目录下的classes目录中

②使用指令

dx --dex --output=项目路径\bin\classes.dex 项目路径\bin\classes

#指令打包之生成未签名的apk

1、打包Apk需要三个元素

①编译后的资源文件

②dex文件

③其他资源

2、操作步骤:

①得到编译后的资源文件,使用指令

aapt package -f -M AndroidManifest.xml -S res -A assets -I D:\...\sdk\platforms\android-16\android.jar  -F bin\resources.ap_

②使用dex和.ap_资源打包Apk

需要使用apkbuilder工具,路径:sdk\tools\apkbuilder.bat

指令:

apkbuilder 项目路径\bin\mobliesafe.apk -u -z 项目路径\bin\resources.ap_ -f 项目路径\bin\classes.dex -rf 项目路径\src -rj 项目路径\libs

3.注意:这个打包的apk是不能安装的,因为android系统安装apk需要知道apk的签名

#指令打包之生成签名的apk

打包一个签名的apk需要两步操作

1.生成签名文件

2.根据签名文件进行打包的apk

操作步骤:

1.生成签名文件

①指令工具路径:Java -> jdk -> bin -> keytool.exe

②使用指令进入到工程的根目录下

③使用指令

keytool -genkeypair -alias zdc -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore zdc.keystore

2.根据签名文件进行打包的apk

①指令工具路径:Java -> jdk -> bin -> jarsigner.exe

②使用指令

jarsigner -keystore zdc.keystore -keypass 123456 -storepass 123456 -signedjar bin\mobliesafe_signed.apk bin\mobliesafe.apk zdc

#ant介绍

1.环境变量配置

ANT_HOME ....\apache-ant-1.9.6-bin

Path %ANT_HOME%\bin

2.校验

ant -help  或者 ant -version

#ant基本操作

1.脚本必须写在build.xml中

2.常用标签

project根标签    name: 项目名称。必填    baseDir: 指定当前目录。(选填)    default: 默认执行的任务。 (选填)Target任务标签 name: 任务名称。必填echo输出打印标签message:指定打印的内容示例:<?xml version="1.0" encoding="utf-8"?>

3.执行ant

①cmd -> ant : 查看build.xml文件是否构建成功

②cmd -> ant helloworld : 执行相应的任务

4.如果不想通过ant helloworld执行任务,也可以设置project的default标签设置默认执行任务

示例:

4.也可以输出引用

示例:

${名称}:引用;${basedir} : 本地路径引用

5.执行多个任务

5.1.两个任务

示例:

depends:和哪个任务关联,运行先执行depends中的任务,再执行当前任务

运行Cmd -> ant printdir,这时候就会先打印第一个任务,在打印第二个任务

5.2.三个任务

示例:

多个任务depends中使用“,”分隔

#ant的文件操作

1.添加文件

示例:

mkdir:表示创建目录,dir:是目录的名称

2.删除目录

示例:

delete:删除目录,dir:目录的名称

3.创建文件

因为创建出来文件还需要编辑,ant没有这么强大,所以不能创建文件

4.删除文件

创建文件test.txt示例:file:文件的名称

#ant执行javac指令

1.创建java文件

2.使用ant执行编译指令

原先:编译:javac Test.java执行java Test

示例:

javac:标示javac指令,src:根目录,exclude:表示不编译哪个文件

#ant打包手机卫士

在eclipse的手机卫士的项目根目录中新建文件build.xml,发现无法进行快捷提示,这是因为缺少ant.dtd系统文件,将ant.dtd导入到工程的根目录下在,在重新创建build.xml,创建的时候点击下一步,不要直接点击完成,在跳转的下一个界面中选择导入自己的dtd文件,完成即可

1.生成R文件

1.1.创建存放R文件的目录,工程 -> build

1.2.创建gen目录

示例:

路径下面还会用,抽取路径

property : 设置属性

2.运行

window -> show view -> ant -> 点击加号将build.xml添加到ant中,如果出现错误将build.xml中的                                                                                               ject SYSTEM "ant.dtd" >注释调用,点击运行即可

3.生成R文件

3.1.生成R文件需要aapt,但是aapt是在sdk目录下的,如何去获取呢?可以通过环境变量获取

示例:environment : 表示设置环境变量的标示

3.2.生成R文件

示例:

exec : 执行指令    executable:执行什么指令,ant无法通过快捷提示出来的。

3.3.在执行的时候还需要创建保存目录

示例:

4.aidl转化java文件操作:

4.1.设置属性获取aidl工具

示例:

4.2.执行指令

因为有多个aidl文件所以需要执行多个aidl指令,在ant中exec标签是执行一条指令,apply标签执行多条指令

示例:

fileset : 执行的文件的组,dir:文件存放的根目录 includes:文件的位置

**/*.aidl : **/:表示:aidl文件的上级目录  *.aidl:任何aidl文件

4.3.将相应的目录生成一下

示例:

5.java转class操作

5.1.创建classes目录,修改init任务

示例:

5.2.设置转化操作

示例:

classpath : 表示设置路径组,fileset:标示多个文件

5.3.设置路径属性

示例:

6.解压jar包

示例:

7.class文件转dex文件

7.1.获取dx工具

示例:

7.2.设置执行任务

示例:

7.3.设置路径

示例:

8.打包资源文件

8.1.设置执行任务

示例:

8.2.设置路径

示例:

9.生成未签名的apk

9.1.获取打包指令

示例:

9.2.设置执行任务

示例:

9.3.设置路径

示例:

10.生成签名的apk

将之前用命令写的key文件拷贝到工程的根目录下

10.1.获取执行指令工具

示例:

10.2.设置执行任务

10.3.设置路径

示例:

11.资源混淆

11.1.解压AndResGuard-master.zip,在其中的tool_output找到AndResGuard-cli-1.1.4.jar

11.2.将AndResGuard-cli-1.1.4.jar拷贝到工程的tools目录下

11.3.将config.xml文件拷贝到工程的tools目录下

11.4.修改config.xml文件

示例:

11.5.使用指令测试,必须使用JDK1.7,并且路径不能有空格

D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk

11.6.解决7za的错误

将SevenZip\executable目录下找到7za-windows_x86_64.exe拷贝到工程的tools目录下

11.7.将key文件也放到目录下重新执行命令

D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk -7zip 7za-windows_x86_64.exe

11.8.设置ant执行任务

设置JDK1.7路径

示例:

设置执行任务示例:

注意:这时候需要将config.xml拷贝到根目录下

java打包apk_Android中APK打包流程相关推荐

  1. Android中APK打包流程

    aapt: android application package tool,SDK (Android打包流程图) #Android打包流程 1.通过aapt工具将 资源文件(res).清单文件(An ...

  2. 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )

    文章目录 一.报错信息 二.解决方案 ( 指定 APK 打包动态库的 CPU 架构 ) 一.报错信息 外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm ...

  3. Android中APK安装流程解析

    前言:大家都知道,手机关机以后,就是一个冰冷的砖头,只能用来做防身的利器,但是开机后,点击桌面上的任何一个图片,都能开启一个APP,这说明在开机过程中,系统把已经安装好的APP加载到内存中,这到底是怎 ...

  4. eclipse中linux打包,Eclipse中Maven打包程序并在Linux中运行

    Eclipse中Maven打包程序并在Linux中运行 1 在Eclipse中新建Maven工程 新建后的maven工程如下: 新建Maven工程的默认pom.xml如下,不需要修改: 4.0.0 T ...

  5. android studio打包三星闪退,Android studio中apk打包好后,传到手机,安装好后闪退是什么原因,提示,,已停止运行...

    2016-04-15 回答 渠道信息一般在 androidmanifest.xml中修改以下值: 首先你必须在androidmanifest.xml中的meta-data修改以下的样子: androi ...

  6. 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程

    哔哩哔哩:https://www.bilibili.com/video/BV1UE411A7rW?p=1 Android 逆向工程师系统培训‹第九期›( 课程目录 ):https://ke.yijin ...

  7. java 打包apk_Android APK打包流程

    简单build流程图 官网给了我们一张非常简单的编译.打包.apk生成内容以及签名的图片.图片大体介绍了从Project到运行到设备或者模拟器的一个大体流程,我们也从中看到一个完整的apk包含如下内容 ...

  8. 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )

    文章目录 一.APK 文件结构 二.APK 打包流程 三.APK 安装流程 四.安卓虚拟机 一.APK 文件结构 Android 应用的安装包时 以 " .apk " 为后缀的 A ...

  9. apk私钥_移动安全(二)|APK打包流程及签名安全机制初探

    0x00.今天我们聊什么? 今天我们聊些啥?许久不见,是该聊些啥了,话不多说,先来个五毛钱得,聊一聊胡小毛的Android逆向之路吧,当然,你们想知道的一定不是走了这么远的路,胡小毛今年是不是又长高了 ...

最新文章

  1. 数据处理压力中的自我拯救
  2. Flask之扩展flask-migrate
  3. python 协程、进程、线程_Python进程、线程、协程之间的关系
  4. WordPress一个还不错的404html单页代码
  5. iOS开发 - StoryBoard + UIScrollView + UIView
  6. 安工大计算机学院肖维民,安工大路由器实验报告.docx
  7. 排序-InsertionSort 插入排序
  8. Dropbox的服务器和网络自动化运维实践
  9. 挨踢部落故事汇(2):机缘所致转型之路
  10. CSS命名及书写规范
  11. 解决Windows不在第一分区时变色龙引导问题
  12. 【报告分享】 2020-2021年数字内容产业趋势报告-企鹅智库 (附下载)
  13. linux(rhel) rescue修复详解
  14. 我的世界空岛服务器修改地形,我的世界空岛制作教程 特别地形制作
  15. 微信小程序画布实现星星闪烁
  16. dingo php,Laravel+Dingo/Api 自定义响应 | 码农网
  17. Android 获取wifi列表
  18. 蓝牙耳机厂家新品发布——ANC主动降噪耳机U2065
  19. 力扣解法汇总589- N 叉树的前序遍历
  20. Python:线程同步,Barrier屏障

热门文章

  1. 小程序canvas2d绘制页面并且生成图片在页面预览可下载转发
  2. sklearn-SVM 模型保存、交叉验证与网格搜索
  3. python基础练习----输入一个奇数,然后判断最少几个 9 除于该数的结果为整数
  4. matlab 地震属性分析,地震属性优化在储层预测中的应用
  5. 每天看三次,预防颈椎病
  6. 佳能Canon PIXMA iX4000 打印机驱动
  7. OrgChart - 配置项详解 (精选+原创)
  8. 初三的计算机知识点,初三电脑考试试题
  9. 移动医疗是大势所趋 未来将推向家庭
  10. 前后端联调和跨域处理