首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用具有本机扩展的ant mxmlc任务

使用具有本机扩展的ant mxmlc任务
EN

Stack Overflow用户
提问于 2012-06-20 12:12:23
回答 5查看 3.9K关注 0票数 4

我有一个AIR应用程序,我正在编译到移动设备上。有一个iOS原生扩展(JamPot MobileBackup),在集成开发环境中使用时可以很好地编译。

但是,现在我们要支持其他平台,IDE是不够的,我决定构建一个Ant脚本来运行构建过程。

问题是这个特殊的ANE似乎是在扩展代码中定义MobileBackup类,而不是像我使用的其他ANE那样在单独的.as文件中定义。

下面是我看到的错误:

代码语言:javascript
复制
[mxmlc] Loading configuration file /Users/anderson/src/flex/4.6.0/frameworks/airmobile-config.xml
[mxmlc] /Users/anderson/src/xxx/src/xxx/Utility.as(32): col: 35 Error: Type was not found or was not a compile-time constant: MobileBackup.
[mxmlc] 
[mxmlc]         private static var mobileBackup:MobileBackup = new MobileBackup();
[mxmlc]                                         ^
[mxmlc] 
[mxmlc] /Users/anderson/src/xxx/src/xxx/Utility.as(32): col: 54 Error: Call to a possibly undefined method MobileBackup.
[mxmlc] 
[mxmlc]         private static var mobileBackup:MobileBackup = new MobileBackup();
[mxmlc]                                                            ^
[mxmlc] 
[mxmlc] /Users/anderson/src/xxx/src/xxx/Utility.as(32): col: 54 Error: Call to a possibly undefined method MobileBackup.
[mxmlc] 
[mxmlc]         private static var mobileBackup:MobileBackup = new MobileBackup();
[mxmlc]                                                            ^
[mxmlc] 
[mxmlc] /Users/anderson/src/xxx/src/xxx/Utility.as(21): col: 35 Error: Definition ie.jampot.nativeExtensions:MobileBackup could not be found.
[mxmlc] 
[mxmlc]     import ie.jampot.nativeExtensions.MobileBackup;

mxmlc调用如下所示:

代码语言:javascript
复制
<mxmlc 
   file="${app.main.class.file}" 
   output="${build.output.swf.file}" 
   locale="${LOCALE}" 
   static-rsls="false" 
   accessible="false" 
   configname="airmobile" 
   debug="${build.debug.mode}" 
   failonerror="true" 
   fork="true" 
   maxmemory="512m">
  <source-path path-element="${app.src.path}"/>
  <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs/*" />
  </compiler.library-path>
  <library-path file="${FLEX_HOME}/frameworks/locale/${LOCALE}" append="true"/>
  <library-path dir="${spicelib.lib.path}" includes="*.swc" append="true"/>
  <library-path dir="${parsley.lib.path}" includes="*.swc" append="true"/>
  <library-path dir="${app.lib.path}" includes="*.swc" append="true"/>
  <external-library-path file="${AIR_GLOBAL}" append="true"/>
  <external-library-path dir="${app.ane.path}" includes="*.ane" append="true"/>
  <define name="CONFIG::DESKTOP" value="${output.config.environment.desktop}"/>
  <define name="CONFIG::IOS" value="${output.config.environment.ios}"/>
  <define name="CONFIG::ANDROID" value="${output.config.environment.android}"/>
  <define name="CONFIG::PRODUCTION" value="${output.config.environment.production}"/>
  <define name="CONFIG::STAGING" value="${output.config.environment.staging}"/>
  <define name="CONFIG::LOCAL" value="${output.config.environment.local}"/>
</mxmlc>

其中,app.ane.path是项目的.ane文件集合的路径。

我还尝试使用library-path而不是外部库路径。

除了添加build.xml之外,我根本没有更改Flash Builder项目的布局或内容,它仍然可以在集成开发环境中很好地编译。

我需要做什么才能让它在IDE外部编译?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-20 12:13:42

我把这些都打出来了,决定在发帖前再做一次尝试。我弄明白了,所以我会在这里为其他人张贴结果。

Flash Builder必须将SWC从ANE中拉出以供mxmlc使用。我在别处找到了SWC的副本,并将其添加到我的libs文件夹中,嘿,很快,它就可以工作了。

票数 4
EN

Stack Overflow用户

发布于 2013-02-08 22:46:38

我不能解释为什么,但是如果你复制并重命名你的.ane文件,并将它们更改为.swc文件(字面意思是复制并重命名,没有转换),然后引用an的目录作为外部库路径-它是有效的。

代码语言:javascript
复制
<compiler.external-library-path dir="${ANE_DIR}" includes="*.swc" append="true" />
票数 3
EN

Stack Overflow用户

发布于 2014-01-23 14:46:05

我研究了mxmlc Ant Task的源代码,它显式地忽略了任何非*.swc的文件。我在github上派生了apache/flex-sdk,并修复了它,这样mxmlc就可以接受*.swc和*.ane了。您可以在https://github.com/leapingbytes/flex-sdk上克隆修复的版本(要构建修复的ant任务jar,请转到模块/antTasks并运行ant)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11112705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档