[转] Ant 编译 Android 项目为 Apk 实战, 常见问题解决
补充,自行安装Ant, 配置ant环境变量, 在android 项目 根目录下使用
android update project
可以自动生成 build.xml 和 local.peoperties 文件
//------------------------------------------------------------------------------------------------------------------
1、背景
项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从eclipse中导出签名APK,很是麻烦。于是想起了之前探索过的Ant自动签名打包。查看自己之前写的博客Windows系统下Ant自动编译打包并签名Android应用——探索篇,边动手边复习。但是后面遇到了一大串的问题...
2、问题解决过程
1)、libs库中的第三方包
如果项目只是引用了第三方jar包,只要将jar包放入项目libs目录下就可以了,ant编译的时候会自动把第三方jar包加入进去的,没有任何问题。
2)、项目引用了其他library项目
如果项目中引用了其他library项目,在使用android update project命令的时候,会提示你在命令后面添加--subproject参数来将其他引用项目一起update,一开始以为没什么问题,就没走这步,谁知道后面提示找不到library项目的build.xml文件。
BUILD FAILED /Android/SDK/sdk/tools/ant/build.xml:: Invalid file: /依赖项目/build.xml
提示这个错误,不要着急,毕竟能大概知道原因,就是因为引用的第三方library项目没有build.xml文件吧。没关系,我们对所有第三方项目都执行一次 android update project 命令,让它们根目录下都自动生成 build.xml 和 local.properties 文件,问题迎刃而解。
3)、invalid resource directory name: F:\workspace\Zlib\bin\res/crunch 错误
-code-gen:
[mergemanifest] Found Deleted Target File
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
[echo] Handling aidl files...
[aidl] No AIDL files to compile.
[echo] ----------
[echo] Handling RenderScript files...
[echo] ----------
[echo] Handling Resources...
[aapt] Generating resource IDs...
[aapt] invalid resource directory name: F:\workspace\Zlib\bin\res/crunch BUILD FAILED
D:\Android\sdk\tools\ant\build.xml:: The following error occurred while executing this line:
D:\Android\sdk\tools\ant\build.xml:: The following error occurred while executing this line:
D:\Android\sdk\tools\ant\build.xml:: null returned:
遇到这个错误,编译失败,很棘手,完全不知道原因。通过查找资料,发现可能是因为Android SDK版本太新了(我用的是22.6.2),会自动生成crunch目录,而ant在编译时总是不识别bin目录下编译好的资源。
找到两个解决方法:
①、关掉eclipse,因为eclipse自动生成res\bin\crunch目录;去到项目目录下删掉bin文件夹;命令行中执行ant release命令;
②、在ant\tools\build.xml或者项目的build.xml文件中添加
我的做法是先按照①的做法,再在项目的build.xml文件中添加②的属性,也不知道②的屏蔽方法会不会造成其他问题,反正命令行中提示如下
-compile:
[javac] Compiling source files to /Users/Rubert/myApp/platforms/android/CordovaLib/ant-build/classes
[javac] 警告: [options] 源值1.5已过时, 将在未来所有发行版中删除
[javac] 警告: [options] 目标值1.5已过时, 将在未来所有发行版中删除
[javac] 警告: [options] 要隐藏有关已过时选项的警告, 请使用 -Xlint:-options。
[javac] 注: 某些输入文件使用或覆盖了已过时的 API。
[javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
[javac] 个警告
[echo] Creating library output jar file...
4)、遇到java文件编码UTF-8 BOM头签名错误(非法字符 \ufeff或者\65279)
这个问题显而易见,就是因为文件编码UTF-8的签名头的问题,使用文本编辑器将文件重新保存为不带BOM头的UTF-8编码文件,OK。我用的是Sublime Text 2。
3、最后结果
release: BUILD SUCCESSFUL
Total time: minute seconds
[转] Ant 编译 Android 项目为 Apk 实战, 常见问题解决的更多相关文章
- windows下使用Ant编译Android项目
1. 安装ant,配置环境变量 2. 执行命令: android update project -p 项目路径 例:android update project -p D:\project\UI_de ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- Visual Studio Xamarin编译Android项目出错的解决办法
安装完Xamarin后,编译Android项目时,你会发现好长时间进度都不动,当你取消编译后,会发现其实是出错了,就是因在Android项目在第一次编译时要去google网站上下一个andorid s ...
- Ant 命令行编译Android项目
首先把android sdk下的tools目录加到系统path环境变量里, 要么就得直接指定android.bat的绝对路径 对于一个新项目, 可以用这个命令创建需要的ant编译环境(可以看到andr ...
- 使用ant优化android项目编译速度,提高工作效率
1.Android项目编译周期长,编译项目命令取消困难 2.在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作 3.在只进行资源文件的修改时,Eclipse对资源文件的修改 ...
- 使用ant编译Android APK
ANT —— Apache Ant is a Java library and command-line tool that help building software. 1. 部署ANT的使用环境 ...
- [Android Pro] ant 编译android工程
参考文章: http://blog.csdn.net/xyz_lmn/article/details/7268582?reload http://hubingforever.blog.163.com/ ...
- Ant编译android程序
http://blog.csdn.net/xyz_lmn/article/details/7268582 这一篇主要做了创建android项目.update已存在项目.ant编译项目. 一,准备ant ...
- eclipse将android项目生成apk并且给apk签名
转载:http://www.cnblogs.com/tianguook/archive/2012/09/27/2705724.html 生成apk最懒惰的方法是:只要你运行过android项目,到工作 ...
随机推荐
- 我的Python成长之路---第一天---Python基础(4)---2015年12月26日(雾霾)
五.数据运算与数据运算符 1.算术运算符 算术运算符 运算符 描述 示例 + 加法 >>> 14 - 5 9 - 减法 >>> 14 - 5 9 * 乘法 &g ...
- swt combo 自动补全
public class AutoCompleteComboMain { static final Display display = new Display(); static fi ...
- css精灵(css script 技术)
上班差不多有15天了,感觉每天都有写不完的也页面,每天都有不同的东西需要学习进步,很充实哦.今天接触到css精灵这个东西.其实之前有看过这种技术,但是没有操作过,只是听说这个技术很强大,能干嘛干嘛,但 ...
- CSS中 清除浮动解决“包含问题”
今天看到大神对浮动定位作了个详细的分析 刚好就分析了当时任务三遇到的问题 在一个div中定义了三个div,让横向排列,结果父元素div的背景色显示不出来了 ,这是个经典问题----包含浮动 < ...
- 根据选择项过滤GridView
前台代码: <div> <asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPos ...
- java多线程——同步块synchronized详解
Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本文介绍以下内容: Java同步关键字(synchronzied) 实例方法同步 静 ...
- NetBeans文件被锁,无法修改
今天用NetBeans写有关Dojo的一个样例时,出现文件被锁,无法修改的情况.找了半天,但是就是不知道是什么原因,我就写在博客上记录下来
- ThinkPHP第十一天(关联模型使用,独立分组配置,MySQL concat用法)
1.关联模型的使用 定义方式:新建一个类文件UserRelationModel.class.php Class UserRelationModel extends RelationModel{ pro ...
- setTimeout和setInterval区别
setTimeout和setInterval这两个函数, 大家肯定都不陌生, 但可能并不是每个用过这两个方法的同学, 都了解其内部的实质 甚至可能会错误的把两个实现定时调用的函数理解成了类似threa ...
- 2013 南京邀请赛 A play the dice 求概率
/** 大意:给定一个色子,有n个面,每一个面上有一个数字,在其中的m个面上有特殊的颜色,当掷出的色子出现这m个颜色之一时,可以再掷一次..求其最后的期望 思路:假设 期望为ans 4 ans = 1 ...