使用ant编译Android APK
ANT —— Apache Ant is a Java library and command-line tool that help building software.
1. 部署ANT的使用环境
① 登录ant的官方网站http://ant.apache.org/bindownload.cgi,下载apache-ant-1.10.1-bin.zip。这是ant要使用的类库。
② 在windows环境中,主要配置两个环境ant_home和path
ANT_HOME :apache-ant-1.10.1-bin.zip的解压文件(apache-ant-1.10.1)所在的位置;
path路径设置为:PATH = %ANT_HOME%/bin; %ANT_HOME%/lib
③ 这两个路径的设置方法:
右键点击“我的电脑”---属性---高级系统设置---高级---环境变量---在"系统变量“中点击”新建“---
变量名:ANT_HOME 变量值:D:\apache-ant-1.10.1 (可以用同样的方法设置path路径)
④ 在dos窗口中输入 ant -version,检查ant是否已经配置完成。
2. Android的环境配置
platform-tools —— 执行adb命令的环境变量;
sdk目录下的tool —— 执行android命令的环境变量,利用ant构建apk所必须的;
到目前为止,ANT和Android的环境配置成功
3. Ant的简单命令及创建Android工程
参数说明:
-n --name : Project name.
-a --activity : Name of the default Activity that is created. [required]
-k --package : Android package name for the application. [required]
-v --gradle-version: Gradle Android plugin version.
-t --target : Target ID of the new project. [required]
-g --gradle : Use gradle template.
-p --path : The new project's directory. [required]
3.1 列出不同版本平台对应的ID编号:
C:\Users\nicole>android.bat list targets id: or "android-15"
Name: Android 4.0.
Type: Platform
API level:
Revision:
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800
Tag/ABIs : no ABIs.
---------- id: or "android-21"
Name: Android 5.0
Type: Platform
API level:
Revision:
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
----------
id: or "android-23"
Name: Android 6.0
Type: Platform
API level:
Revision:
Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, WXGA720, WXGA800, WXGA800-7in
Tag/ABIs : no ABIs.
3.2 创建android项目,举例:
C:\Users\nicole>android create project -k com.android.nicole -a AntDemo -t -p D:\project\Ant_Demo
Created project directory: D:\project\Ant_Demo
Created directory D:\project\Ant_Demo\src\com\android\nicole
Added file D:\project\Ant_Demo\src\com\android\nicole\AntDemo.java
Created directory D:\project\Ant_Demo\res
Created directory D:\project\Ant_Demo\bin
Created directory D:\project\Ant_Demo\libs
Created directory D:\project\Ant_Demo\res\values
Added file D:\project\Ant_Demo\res\values\strings.xml
Created directory D:\project\Ant_Demo\res\layout
Added file D:\project\Ant_Demo\res\layout\main.xml
Created directory D:\project\Ant_Demo\res\drawable-xhdpi
Created directory D:\project\Ant_Demo\res\drawable-hdpi
Created directory D:\project\Ant_Demo\res\drawable-mdpi
Created directory D:\project\Ant_Demo\res\drawable-ldpi
Added file D:\project\Ant_Demo\AndroidManifest.xml
Added file D:\project\Ant_Demo\build.xml
Added file D:\project\Ant_Demo\proguard-project.txt
运行成功后会在D盘的project\Ant_Demo目录下生成一个Android工程,里面有我们需要的build.xml文件
3.3 Undate已有的Android工程
对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml 等ant 的配置文件
C:\Users\nicole>android update project --name MainActivity -t -p D:\project\Android_demo
Updated project.properties
Updated local.properties
Added file D:\project\Android_demo\build.xml
Updated file D:\project\Android_demo\proguard-project.txt
It seems that there are sub-projects. If you want to update them
please use the --subprojects parameter.
编译:直接使用ant命令 是不会有文件输出的,所以后面一定要带上参数
4. 使用ant打包时,添加第三方jar包
4.1 libs 库中的第三方jar包
如果项目只是引用了第三方jar包,只要将jar包放在libs文件夹下就ok了,ant会在编译打包过程中会自动将第三方jar加进去的。
但是当我们的android 项目参考了其他library项目,这时候我们最初在输入android update 命令的时候应该多一个参数 --subprojects。
例: C:\Users\nicole>android update project --name SecontActivity -t 9 -p D:\project\Android_demo
若有报错,是因为那个library 还不支持ant自动编译,需要先让它也支持:
进入到library项目所在的目录,输入命令 android update lib-project -p ./ (注意是 lib-project);
再回到原项目,输入命令” android update project --name MenudrawSample -p ./ --subprojects ",这样就OK了。
4.2 user library库中第三方jar包
https://my.oschina.net/yunfound/blog/169288
4. 利用Ant打包
如果是利用测试签名打包:cmd命令进入项目根目录,如:E:\ant\AntTest ,执行 ant debug,会在项目的bin目录下生成使用debug签名的apk
如果是自定义签名:则在项目根目录下添加ant.properties(也有会自动生成local.properties)文件,配置密钥的路径和别名
具体配置如下:
key.store=路径
key.store.password=
key.alias=
key.alias.password=
同样进入根目录下,运行 ant release就可以打包了
5. 编译
参数说明:
debug: 带调试用签名的构建
release:生成的apk必须签名才可以发布
install: 安装调试构建的包到运行着的模拟器或者设备
reinstall
uninstall: 卸载安装包
ant debug: 生成一个测试版apk,默认使用 debug key 进行签名,生成的apk(your_project_name-debug.apk)在bin目录下。
ant release: 生成一个未签名和未aligned的apk包, project_name-release-unsigned.ap和project_name-release-unaligned.apk 在bin目录下。
例:进入到项目根目录中使用ant命令时,或者ant debug Buildfile: D:\project\Ant_Demo\build.xml
D:\project\Ant_Demo>ant debug
Buildfile: D:\project\Ant_Demo\build.xml -set-mode-check: -set-debug-files: -check-env:
[checkenv] Android SDK Tools Revision 23.0.
[checkenv] Installed at D:\android\adt-bundle-windows-x86-\sdk -setup:
[echo] Project Name: AntDemo
[gettype] Project Type: Application -set-debug-mode: -debug-obfuscation-check: -pre-build: -build-setup:
[getbuildtools] Using latest Build Tools: 20.0.
[echo] Resolving Build Target for AntDemo...
[gettarget] Project Target: Android 5.0
[gettarget] API level:
[gettarget] WARNING: No minSdkVersion value set. Application will install on all Android versions.
[echo] ----------
[echo] Creating output directories if needed...
[mkdir] Created dir: D:\project\Ant_Demo\bin\res
[mkdir] Created dir: D:\project\Ant_Demo\bin\rsObj
[mkdir] Created dir: D:\project\Ant_Demo\bin\rsLibs
[mkdir] Created dir: D:\project\Ant_Demo\gen
[mkdir] Created dir: D:\project\Ant_Demo\bin\classes
[mkdir] Created dir: D:\project\Ant_Demo\bin\dexedLibs
[echo] ----------
[echo] Resolving Dependencies for AntDemo...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency]
[dependency] ------------------
[echo] ----------
[echo] Building Libraries with 'debug'...
[subant] No sub-builds to iterate on -code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only. 此处省略......
-post-package:
-do-debug:
[zipalign] Running zip align on final apk...
[echo] Debug Package: D:\project\Ant_Demo\bin\AntDemo-debug.apk
[propertyfile] Creating new property file: D:\project\Ant_Demo\bin\build.prop
[propertyfile] Updating property file: D:\project\Ant_Demo\bin\build.prop
[propertyfile] Updating property file: D:\project\Ant_Demo\bin\build.prop
[propertyfile] Updating property file: D:\project\Ant_Demo\bin\build.prop
-post-build:
debug:
BUILD SUCCESSFUL
Total time: 8 seconds
6. 安装apk
D:\project\Ant_Demo>adb install bin\AntDemo-debug.apk
KB/s ( bytes in .026s)
pkg: /data/local/tmp/AntDemo-debug.apk
Success
使用ant编译Android APK的更多相关文章
- [转] Ant 编译 Android 项目为 Apk 实战, 常见问题解决
补充,自行安装Ant, 配置ant环境变量, 在android 项目 根目录下使用 android update project 可以自动生成 build.xml 和 local.peoperties ...
- [Android Pro] ant 编译android工程
参考文章: http://blog.csdn.net/xyz_lmn/article/details/7268582?reload http://hubingforever.blog.163.com/ ...
- 反编译Android APK及防止APK程序被反编译
怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式 ...
- Ant编译android程序
http://blog.csdn.net/xyz_lmn/article/details/7268582 这一篇主要做了创建android项目.update已存在项目.ant编译项目. 一,准备ant ...
- 【FAQ】Ubuntu环境下ant编译android代码问题
在Ubuntu14.04环境下,编译android程序时候,运行ant debug的时候出现如下异常:
- 『原』在Linux下反编译Android .apk文件 使用apktool dex2jar JD-eclipse
一.使用apktool 将 apk反编译生成程序的源代码和图片.XML配置.语言资源等文件 具体步骤: (1)下载反编译工具包:apktool 官方的打不开 http://apktool.shouji ...
- 实例具体解释:反编译Android APK,改动字节码后再回编译成APK
本文具体介绍了怎样反编译一个未被混淆过的Android APK,改动smali字节码后,再回编译成APK并更新签名,使之可正常安装.破译后的apk不管输入什么样的username和password都能 ...
- linux下反编译android apk
1.所需要的工具 1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等, 下载地址:https://code.google.com/p/android-apktool/downlo ...
- Mac 下反编译Android APK
准备工作:安装ApkTool.dex2jar.JD-GUI 安装ApkTool 1.下载ApkTool.大家可以从 https://ibotpeaches.github.io/Apktool/inst ...
随机推荐
- 《计算机程式设计》Week2 课堂笔记
本笔记记录自 Coursera课程 <计算机程式设计> 台湾大学 刘邦锋老师 Week2 Control Structure 2-1 If-then-else if then 判断 if ...
- 安全运维 - Linux系统维护
命令相关 帮助信息命令:help.whatis.info.which.whereis.man 目录管理: cd.ls.mkdir.rm.chmod.mv 用户管理: groupadd.groupdel ...
- 应用安全 - 代码审计 - Python
flask客户端session导致敏感信息泄露 flask验证码绕过漏洞 CodeIgniter 2.1.4 session伪造及对象注入漏洞 沙箱逃逸
- Vue 基础 day05 webpack 3.x
什么是webpack webpack 是前端的一个项目构建工具, 它是基于 Node.js 开发出来的一个前端工具 借助于webpack这个前端自动化构建工具, 可以完美实现资源的合并.打包.压缩.混 ...
- [Git] 001 初识 Git 与 GitHub 之新建仓库
在 GitHub 的 UI 界面使用 Git 新建一个仓库 1. 点击右上角的 +,选择 New repository 2. 网站会自动跳转至新页面,在下框中填入仓库名 仓库名也有讲究,挖个坑,日后填 ...
- [Markdown] 02 简单应用 第二弹
目录 4. 插入链接 4.1 Markdown 的方式 用法 1 用法 2 4.2 HTML5 的方法 用法 1 用法 2 5. 插入图片 5.1 使用网络地址 5.2 使用本地地址 5.2.1 小括 ...
- <每日一题> Day7:CodeForces-1166C.A Tale of Two Lands (二分 + 排序)
原题链接 参考代码: #include <cstdio> #define mid ((l + r) / 2) #include <algorithm> using namesp ...
- java_第一年_JDBC(6)
DataBaseMetaData对象:由Connection.getDataBaseMetaData()方法获得,可以用来获取数据库的元数据,提供的方法有: getURL():返回一个String类, ...
- STM32启动地址设置及从非0x800000 开始调试程序
首先设置程序的启动地址,STM32默认的启动地址是从0x8000000开始的,现在我要设置程序向后偏移10K地址,也就是从0x8002800启动. 需要分两步完成上面操作: 一.Keil MDK设置: ...
- docker网络 macvlan
docker 还开发了另一个支持跨主机容器网络的 driver:macvlan. macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 ...