使用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 ...
随机推荐
- 《图解设计模式》读书笔记7-1 facade模式
目录 1. Facade模式简介 2. 示例程序 2.1 类图 2.2 程序 3.角色和类图 4.思路拓展 1. Facade模式简介 开发程序的过程中,随着时间的推移,类会越来越多,调用关系会越来越 ...
- win10+jdk+mysql+tomcat+jpress环境搭建与部署
本机搭建jpress用于接口测试的学习 目录 1.环境与工具准备 2.mysql服务端安装 3.tomcat配置 4.jpress部署 1.环境与工具准备 a.服务器为本机为win10 64位 b.j ...
- Spring学习02——控制反转、依赖注入
有两个人,张三和李四 package com.su.service; public class ZhangSan implements Tester{ public void test(){ Syst ...
- LeetCode——28. Implement strStr()
题目: class Solution { public: int strStr(string haystack, string needle) { if(needle.empty()){ return ...
- Linux QQ全新回归
福音! 2019年10月24日,腾讯官方发布QQ Linux 2.0.0 Beta版本,告示着Linux QQ的回归. 2008年,腾讯曾推出QQ for Linux,但2009年之后就再没有更新过, ...
- js 获取屏幕宽高
网页可见区域宽: document.body.clientWidth 网页可见区域高: document.body.clientHeight 网页可见区域宽: document.body.offset ...
- vue 点击任意地方防止冒泡
$('.mainL').mouseup(function(e){ let objLeader = $(obj.target); // 设置目标区域 if(!objLeader.is(e.target) ...
- ModelForm基本使用
介绍 Django提供Form和ModelForm两种表单验证方式.相比较Form,ModelForm可以直接与与数据库表相关联,不需要像Form那样需要手动逐一字段添加表单验证的字段.且可以随意选择 ...
- Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句
1.log4j1配置 目录结构: conf.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...
- 以区间DP为前提的【洛谷p1063】能量项链
(跑去练习区间DP,然后从上午拖到下午qwq) 能量项链[题目链接] 然后这道题也是典型的区间DP.因为是项链,所以显然是一个环,然后我们可以仿照石子合并一样,把一个有n个节点的环延长成为有2*n个节 ...