专栏首页小巫技术博客Android自动化构建之-Ant多渠道打包(上)

Android自动化构建之-Ant多渠道打包(上)

前言

Ant是历史比较悠久的一个自动化构建工具,Android开发者可以通过它来实现自动化构建,也可以实现多渠道打包,关于apk打包的方式一般有Ant、Python、Gradle三种,这三种打包方式都各自有优点和缺点,本篇博文先给大家介绍如何使用Ant来实现自动构建和多渠道发布。

开发环境

  • Window7
  • Ant
  • jdk
  • android sdk

mac系统下所需要的运行环境也是类似的,我们都需要配置Ant、jdk、sdk的环境变量,我们可以看一下window下是环境变量配了些什么: ANT_HOME : D:\android\apache-ant-1.9.4 JAVA_HOME : C:\Program Files\Java\jdk1.6.0_45 ANDROID_SDK_HOME : D:\android\adt-bundle-windows-x86_64-20140321\sdk PATH: %JAVA_HOME%/bin;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;%ANT_HOME%\bin; CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar

以上环境变量配好之后,你才可以进入下一步,不会配?回家吧,开发不适合你。

先说APK构建过程

下面来简单描述下apk构建的过程:

  1. 使用aapt生成R.java类文件
  2. 使用android SDK提供的aidl.exe把.aidl转成Java文件
  3. 使用javac命令编译.java类文件生成class文件
  4. 使用android SDK提供的dx.bat命令行脚本生成classes.dex文件
  5. 使用android SDK提供的aapt.exe生成资源包文件
  6. 使用apkBuilder.bat生成未签名的apk安装文件
  7. 使用jdk的jarsigner对未签名的包进行apk签名
  8. 使用Zipalign工具对apk进行优化

我们从上面的描述可以知道apk具体的步骤和使用到的工具,对应的工具在sdk中都可以找到,自己去翻翻吧,但你会发现新的sdk版本,aapt被放到了build-tools目录下,apkBuilder.bat文件在tools目录找不到了,你可以去网上去下一个,然后放到tools目录下。为了让大家更清楚apk构建的过程,放上官方的一张图:

有了这张图,相信大家已经清楚了apk到底是如何生成的吧,不多说了。

构建命令详解

  • aapt命令生成R.java文件

示例命令:

aapt package -m -J <R.java文件夹> -S <res路径> -I <android.jar路径> -M<AndroidManifest.xml路径>

命令解释:

-f 如果编译出来的文件已经存在,强制覆盖 -m 使生成的包的目录存放在-J参数指定的目录 -J 指定生成的R.java 的输出目录 -S res文件夹路径 -A assert文件夹路径 -I 某个版本平台的android.jar的路径 -F 具体指定APK文件的输出

  • aidl命令生成.aidl文件

示例命令:

aidl -p<framework.aidl路径> -I<src路径> -o<目标文件目录> .aidl文件

注意:命令和路径是没有空格的

  • javac命令生成.class文件

示例命令:

javac -d destdir srcFile

参数解释: -d 指定存放类的文件夹 -bootclasspath 覆盖引导类文件的位置 -encoding 指定源文件使用的编码 -sourcepath 指定查找输入源文件位置

  • dx命令生成classes.dex文件 示例命令: dx --dex --output classes.dex bin/classes/ libs/ 命令解释:将bin/classes下的class文件和libs下的jar文件编译成classes.dex文件
  • aapt生成资源包文件resources.ap_

命令示例:

aapt package -m -J <R.java文件夹> -S <res路径> -I <android.jar路径> -A <asset路径> -M<AndroidManifest.xml路径> -F <resources.ap_文件路径>
  • apkbuilder.bat已经过时了,使用以下方法

示例命令:

java -cp <sdklib.jar路径> com.android.sdklib.build.ApkBuilderMain <未签名.apk>  -v -u -z bin\resources.ap_ -f bin\classes.dex -rf src
  • 通过jarsigner来生成 示例命令: jarsigner -verbose -keystore <keystore路径> -signedjar -<输出签名apk路径> <未签名apk路径> <keystore别名>
  • 最后一步使用zipalign工具进行apk对齐优化

示例命令:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

上面的8个步骤就是实现apk构建的过程,都是通过命令来一步一步实现,要注意每一步生成的东西。

小结

本篇博文主要给大家介绍了Android中apk构建的过程,也详细的讲解了每一步具体的命令操作,由于不想一篇把所有东西堆在一起,我将会在下一篇来具体使用Ant脚本实现自动化构建和多渠道打包,大家可以继续关注。

本文分享自微信公众号 - 小巫技术博客(wwjblog),作者:巫山老妖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-03-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 外来物种变鹅记

    用户1130025
  • A019-布局之GridLayout

    网格布局,是Android4.0之后的API才提供的,算是一个相对新的布局容器,它的用法也很简单,类似LinearLayout可以指定方向,也可以指定控件占用多...

    用户1130025
  • A020-列表容器之ListView

    前面介绍了Android UI中的五大布局容器,本节课介绍实际项目当中经常会用到的组件-ListView,它也是一个布局容器,它的每一项就是我们的列表项,每一个...

    用户1130025
  • 移动安全-应用加固命令行工具jar包使用说明

    为方便用户快速集成到自动化任务中,乐固加固推出命令行工具。该工具是一个jar包(支持基础版、专业版、企业版),提供上传apk、下载加固包功能。下载的加固包需要用...

    腾讯云@移动安全
  • 【开源】竖亥:实测FPGA平台上HBM的惊人带宽!

    随着高带宽内存(HBM)的发展,FPGA正变得越来越强大,HBM 给了FPGA 更多能力去缓解再一些应用中遇到的内存带宽瓶颈和处理更多样的应用。然而,HBM 的...

    网络交换FPGA
  • [pixlate] 用 canvas 转像素画

    几周前看到这个像素猫的效果,这个版本的实现原理是 box-shadow,我想到用 grid 也可以实现一遍。接着发散到了“如何将任意图片像素化”上。

    kmokidd
  • 百万级高并发mongodb集群性能数十倍提升优化实践(上篇)

    线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时...

    美的让人心动
  • 【leetcode】Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values.

    阳光岛主
  • Spring Cloud Gateway监控

    只要为Spring Cloud Gateway添加Spring Boot Actuator( spring-boot-starter-actuator )的依赖...

    用户1516716
  • Centos学习笔记---文件搜索命令

    $which ls whereis可以表现出命令的帮助信息,帮助文件说存放的信息

    用户1539362

扫码关注云+社区

领取腾讯云代金券