Android程序自动化打包(ant多工程)及相关问题处理

时间:2021-10-26 18:40:09
  • 概述
        在一般的Android开发中,我们通常使用Eclipse自带的导出工具来进行App的签名和发布,Android自动化打包,就是利用脚本将这样一个手动操作的过程转化为一个命令搞定。
  • 准备
        需要配置好JDK、Android SDK和Ant的环境,具体参见本人的上一篇博客: 点击打开链接
  • 步骤
  1. 准备好项目的源码和依赖库源码,最好放在同一级目录下,确保源码和依赖库可在IDE中编译成功,这样就无需调整project.properties文件中依赖库的相对位置了。
  2. 打开CMD命令行,进入到依赖库源码目录,执行android update lib-project -p . -t android-17,这个命令的作用是在依赖库下生成自动打包相关的文件,-p .的意思是在当前根目录下执行,-t android-17的意思是此源码使用android-17 api进行编译,各位根据自己的项目情况自行修改,所有的依赖库都要执行这一步操作。
  3. 打开CMD命令行,进入到源码根目录,执行android update project -p . -t android-17,这个命令的作用是在源码下生成自动打包相关的文件。
  4. 打开CMD命令行,进入到源码根目录,执行ant clean,然后ant debug,如果打包成功,可以在源代码的bin目录下看到未签名的apk文件。
  5. 想要生成签名文件,需要在源码根目录下建立ant.properties文件,内容如下:
    [html]  view plain copy Android程序自动化打包(ant多工程)及相关问题处理 Android程序自动化打包(ant多工程)及相关问题处理
    1. #包名  
    2. application.package=com.nomouse  
    3. #项目名,缺省时源码文件名  
    4. ant.project.name=  
    5. #编码方式  
    6. java.encoding=utf-8  
    7. #编译输出绝对路径  
    8. out.absolute.dir=d:/out  
    9. #生成文件绝对路径  
    10. gos.path=d:/out  
    11. #签名key文件绝对路径  
    12. key.store=D:/adt-bundle/Nomouse  
    13. #签名文件密码  
    14. key.store.password=password  
    15. #签名别称,中文的话需要转成utf-8编码,可以使用JDK自带的native2ascii工具  
    16. key.alias=\u4f01\u4e1a  
    17. #签名别称密码  
    18. key.alias.password=password  
  6. 打开CMD命令行,进入到源码根目录,执行ant release,成功的话可以在d:/out目录下看到输出的App签名文件。



问题一:

用Ant编译时报如下错误

compile:
    [javac] Compiling 1 source file to D:\workspace\cwk\build\classes
    [javac] D:\workspace\cwk\src\core\com\cwk\core\web\action\LoginController.java:1: 非法字符: \65279
    [javac] package com.cwk.core.web.action;
    [javac] ^
    [javac] 1 错误

BUILD FAILED
D:\workspace\admet\build.xml:181: Compile failed; see the compiler error output for details.

该问题是由于文件的字符编码不正确,请用notepad++保存文件格式为utf-8无DOM格式



问题二:

 [aapt] invalid resource directory name: E:\我的依赖工程\bin\res/crunch 这个问题一般是因为sdk的版本比较高,会自动生成crunch目录,而ant的在编译的时候总是不识别bin下编译好的资源,所以忽略crunch目录就好了 

解决方法:打开本地sdk根目录tools》ant》build.xml 找到: <property name="aapt.ignore.assets" value="" /> 改为: <property name="aapt.ignore.assets" value="crunch" /> 问题得到解决。



问题三:
解决方法如图所示:
Android程序自动化打包(ant多工程)及相关问题处理
Android程序自动化打包(ant多工程)及相关问题处理