Ant编译的jar文件,ANE不识别

Ant编译的jar文件,ANE不识别

问题描述

Android的ANE打包需要jar文件。Eclipse可以提供jar文件的导出。

然而,当我使用Ant来自动化完成ANE打包流程的时候,jar文件出了问题。

如果使用Ant生成的jar文件来打包ANE。那么ANE在使用的时候,会发生 ExtensionContext 无法初始化的情况。

也就是说,在调用 ExtensionContext.createExtensionContext(EXTENSION_ID) 的时候,得到的永远是null。

问题分析

以下是构建jar的target: 继续阅读Ant编译的jar文件,ANE不识别

在Ant中替换尖括号

在Ant中替换尖括号

我使用 ReplaceRegexp 任务写了一段脚本替换XML的值:

<replaceregexp file="app.xml"
            match="<filename>"
            replace="name"
            encoding="UTF-8"/>

由于XML规范不允许在属性值中出现尖括号,Ant会报错:

d:\works\build\build.xml:70: 与元素类型 “null” 相关联的 “match” 属性值不能包含 ‘<‘ 字符。

把左右尖括号用他们的十六进制代码代替就可以解决这个问题:

<replaceregexp file="app.xml"
            match="\x3Cfilename\x3E"
            replace="name"
            encoding="UTF-8"/>

如果希望在替换的内容中也使用尖括号,需要一点点小技巧:

<replaceregexp file="app.xml"
            match="(\x3C)filename(\x3E)"
            replace="\1name\2"
            encoding="UTF-8"/>

当然,还有更简单的办法,就是使用 Replacereplacetoken

<replace file="app.xml" encoding="UTF-8">
    <replacetoken><![CDATA[<filename>]]></replacetoken>
    <replacevalue><![CDATA[<name>]]></replacevalue>
</replace>

设置Vim的errorformat以支持mxmlc编译器

Vim调用Ant编译swf并自动调试一文中,我介绍了使用Vim来编译swf的方法,这半年来,我一直都用Vim+Ant+FlexSDK做AS开发,感觉总体效率上比Flash
Builder要高许多。

不好的地方,其实也有许多。最大的不便就是没有代码提示,对于不熟悉的方法,必须要去查看Language Reference。还有个附带的不便就是必须自己手动导入包。不过这两个不便之处,又让我远离了Flash Builder中的哪些错误的代码提示(我被误导过好多次),以及让我更熟悉AS3的包结构。

今天说的不是这些,好了,进入正题把!

在Vim中,有许多为程序员着想的地方。比如碰到编译错误后会自动打开第一个出错的文件并跳转到出错行。改完这个错误后可以用 :cn 命令跳转到下一个出错处继续修改。这个特性降低了程序员在调试过程中对鼠标的依赖,提高了效率。 继续阅读设置Vim的errorformat以支持mxmlc编译器

Flex Compiler SHell Server配置方法

看过Ant and FCSH资源合集的童鞋应该都知道Flex Compiler SHell Server(后简称为FCSHServer)这个用VB开发的FCSH wrapper。本篇就介绍它的用法。

1. 下载FCSHServer并安装;
2. 设置环境变量FCSHServer={你的安装目录,例如:D:\FcshServer}。zrong强烈建议你安装的文件夹不要包含空格,貌似环境变量设置之后,只有重启Windows才能起作用
3. 设置安装目录下server.ini中的sdk和java的值。sdk指向flex SDK文件夹,java指向JDK文件夹,例如:

sdk=d:\flex_sdks\4.1.0
java=d:\Java\jdk1.6.0_25

4. 配置Ant项目,直接看代码吧,有注释。这个项目会经常更新,最新的版本看 这里

继续阅读Flex Compiler SHell Server配置方法

Ant and FCSH资源合集

如果你和我一样,正在或者准备用纯Flex SDK开发SWF或AIR,那么你一定需要FCSH。

fcsh(the Flex compiler shell)是一个基于命令行的编译环境,你可以用它来编译应用程序,模块,和SWC库。它的工作方式与mxmlc和compc类似,但编译速度则要快很多。原因是fcsh会利用内存和缓存。想看更多的介绍,可以看看这里:Using fcsh, the Flex compiler shell

现在,你已经知道使用SDK编译程序比Flash Builder要慢许多的原因了(实际上,Flash Builder第一次编译程序也是很慢的,但编译之后,它就在后台运行了一个fcsh用来加速)

fcsh命令行的使用方法没有什么好说的,直接看上面的链接即可。fcsh是使用命令行来调用mxmlc的,而且fcsh必须始终保持运行,并总是使用这个进程进行编译,否则就没有优化效果。所以,现在有个问题:
继续阅读Ant and FCSH资源合集

Vim调用Ant编译swf并自动调试

或许很少有人像我这么极端吧,放着好好的盗版XP和盗版Flash Builder不用,偏要去鼓捣什么Vim……

当然,在Vim下面,你可以自己写脚本调用Flex SDK的命令行编译器mxmlc进行编译,但我更愿意用Ant,原因如下:

  • 配置方便
    基于XML的配置文件,比命令行好读好写;
  • JAVA原生
    Ant是JAVA写的,Flex SDK的编译器(mxmlc、compc、asdoc……)也是JAVA写的;
  • 通用
    换用Linux或Mac,也一样用,顶多改改变量中的路径。

在Flash Builder下面,按F11后,就可以自动编译swf并打开Flash Player,并显示trace信息,以及调试断点。在Vim中也能这样么?

大部分可以。我们可以用fdb进行swf的调试工作,能看到trace信息,也能设置断点和进行调试,可惜没有Flash Builder那么直观。

但是!!!你可以用Vim写AS代码了!塞翁失马你有没有!!!!

那么,开始吧!

(注意,本文假定你了解Vim)
继续阅读Vim调用Ant编译swf并自动调试