ant打包所遇到问题(外导library项目包)

来源:互联网 发布:抽象工厂模式 java 编辑:程序博客网 时间:2024/05/05 12:14

、背景

项目进行到一定程度了,每次发布前,产品要求打包测试,都需要手动从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 F:/android/adt-bundle-windows-x86-20140321/sdk/tools/ant/build.xml:471: Invalid

提示这个错误,不要着急,毕竟能大概知道原因,就是因为引用的第三方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 FAILEDD:/Android/sdk/tools/ant/build.xml:601: The following error occurred while executing this line:D:/Android/sdk/tools/ant/build.xml:653: The following error occurred while executing this line:D:/Android/sdk/tools/ant/build.xml:698: null returned: 1

遇到这个错误,编译失败,很棘手,完全不知道原因

。通过查找资料,发现可能是因为Android  SDK版本太新了(我用的是22.6.2),会自动生成crunch目录,而ant在编译时总是不识别bin目录下编译好的资源。

①、关掉eclipse,因为eclipse自动生成res/bin/crunch目录;去到项目目录下删掉bin文件夹;命令行中执行ant release命令;

②、在ant/tools/build.xml或者项目的build.xml文件中添加

<property name="aapt.ignore.assets" value="<dir>crunch:!.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" />

我的做法是先按照①的做法,再在项目的build.xml文件中添加②的属性,也不知道②的屏蔽方法会不会造成其他问题,反正命令行中提示如下

-compile:[javac] Compiling 93 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] 3 个警告[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 SUCCESSFULTotal time: 1 minute 27 seconds
0 0
原创粉丝点击