我正在使用AIR for Android进行原生扩展,但是在启动应用时出现以下错误:(编译.ane或app时没有错误)
[项目名称] \ com.adobe.flexide.multiplatform.android.platform \ zbar.ane不是有效的原生扩展文件。
但我只是在尝试在我的Android设备上运行应用程序并且.ane中有ASDoc注释时才会出现此错误。在模拟器上运行时,带有ASDoc注释的项目非常有效。当我使用AIR 3.1和AIR 3.5 beta进行编译时,该错误仍然存在。
继承我的ant buildfile:
<project name="test" default="build-all" basedir=".">
<property name="FLEX_HOME" value="C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0+AIR35beta" />
<property name="BUILDDIR" value="./builddir" />
<property name="BASEDIR" value="." />
<taskdef name="compc" classname="flex.ant.CompcTask" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
<taskdef name="asdoc" classname="flex.ant.AsDocTask" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar" />
<target name="compile-flex" description="Compile AndroidCameraANE.swc">
<compc output="${BUILDDIR}/AndroidCameraANE.swc" locale="en_US"
optimize="true" strict="true" as3="true" warnings="true"
static-link-runtime-shared-libraries="true">
<load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/>
<source-path path-element="${BASEDIR}/actionscript/src"/>
<include-sources dir="${BASEDIR}/actionscript/src" includes="*"/>
</compc>
</target>
<target name="copy-files" description="copy Java, Flex, extension.xml files to the build dir" >
<copy todir="${BUILDDIR}/android/libs/armeabi">
<fileset dir="${BASEDIR}/java/libs/armeabi" />
</copy>
<copy todir="${BUILDDIR}/android/libs/armeabi-v7a">
<fileset dir="${BASEDIR}/java/libs/armeabi-v7a" />
</copy>
<copy todir="${BUILDDIR}/android/libs/x86">
<fileset dir="${BASEDIR}/java/libs/x86" />
</copy>
<copy file="${BASEDIR}/java/bin/zbarane.jar" todir="${BUILDDIR}/android/"/>
<copy file="${BASEDIR}/actionscript/extension.xml" todir="${BUILDDIR}/"/>
</target>
<target name="unzipAndroidANE" description="unzip library.swf from AndroidCameraANE.swc" >
<unzip src="${BUILDDIR}/AndroidCameraANE.swc" dest="${BUILDDIR}/android">
<patternset><include name="library.swf"/></patternset>
</unzip>
<unzip src="${BUILDDIR}/AndroidCameraANE.swc" dest="${BUILDDIR}/default">
<patternset><include name="library.swf"/></patternset>
</unzip>
</target>
<target name="build-ane" >
<exec executable="${FLEX_HOME}/bin/adt.bat" failonerror="true" dir="${BUILDDIR}">
<arg line="-package -target ane zbar.ane extension.xml -swc AndroidCameraANE.swc -platform Android-ARM -C android . -platform default -C default ."/>
</exec>
</target>
<target name="doc" description="updates ane with asdoc. On Android it generates invalid ane file!">
<asdoc output="${BUILDDIR}/tempDoc" lenient="true" failonerror="true"
keep-xml="true" skip-xsl="true" fork="true">
<load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/>
<doc-sources path-element="${BASEDIR}/actionscript/src/com/blogspot/visualscripts/zbar/Zbar.as"/>
</asdoc>
<zip destfile="${BUILDDIR}/zbar.ane" update="true">
<zipfileset dir="${BUILDDIR}/tempDoc/tempdita" prefix="docs">
<include name="*.*"/>
<exclude name="ASDoc_Config.xml"/>
<exclude name="overviews.xml"/>
</zipfileset>
</zip>
</target>
<!-- build order is important -->
<target name="build-all">
<delete dir="${BUILDDIR}" />
<antcall target="compile-flex" />
<antcall target="copy-files" />
<antcall target="unzipAndroidANE" />
<antcall target="build-ane" />
<antcall target="doc" /> <!--Makes invalid file on Android! -->
<delete includeEmptyDirs="true">
<fileset dir="${BUILDDIR}">
<include name="*/**" />
<exclude name="zbar.ane" />
</fileset>
</delete>
</target>
</project>
有没有人设法为Android构建一个内置ASdoc的.ANE?