ANT を使用して、Adobe SDK ツールを使用して iOS IPA ファイルをコンパイルおよびパッケージ化しようとしています。ビルドには大量の RAM が必要なため、ANT を使用する必要があり、コンパイル時に Flash Builder で Java ヒープ領域の問題が発生します (ini ファイルで最大 RAM を増やしたにもかかわらず)。
これは、私のANTビルドのコアがどのように見えるかです:
<!-- Build the SWF and save it in the publish directory -->
<target name="3. Compile SWF" depends="2. Build New Directories">
<mxmlc
file="${MAIN_CLASS}"
output="${OUTPUT_SWF}"
debug="${DEBUG_FLAG}"
failonerror="true">
<load-config filename="${MOBI_CONFIG_FILE}"/>
<define name="MOBI_PROJECT::IS_iOS_BUILD" value="${IS_iOS_BUILD}" />
<define name="MOBI_PROJECT::DEBUG" value="${DEBUG_FLAG}" />
<source-path path-element="${MOBI_DIR}/src"/>
<library-path file="${FLEX_HOME}/frameworks/locale/en_US" append="true"/>
<library-path dir="${MOBI_LIB_RELEASE_DIR}" includes="*.swc" append="true"/>
<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
<include name="libs/*" />
</compiler.library-path>
<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/air">
<include name="**/*.swc" />
</compiler.external-library-path>
<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs">
<include name="**/*.swc" />
</compiler.external-library-path>
<compiler.external-library-path dir="${FLEX_HOME}/frameworks/libs/mx">
<include name="**/*.swc" />
</compiler.external-library-path>
</mxmlc>
</target>
<!-- Package the application to an ipa file & save it in the publish directory -->
<target name="4. Package Application" depends="3. Compile SWF">
<java jar="${ADT}" fork="true" failonerror="true">
<arg value="-package"/>
<arg value="-target"/>
<arg value="ipa-test"/>
<arg value="-provisioning-profile"/>
<arg value="${iOS_PROVISIONING}"/>
<arg value="-storetype"/>
<arg value="pkcs12"/>
<arg value="-keystore"/>
<arg value="${iOS_KEYSTORE}"/>
<arg value="-storepass"/>
<arg value="${iOS_PASS}"/>
<arg value="${IPA_FILE}"/>
<arg value="${APP_DESCRIPTOR}"/>
<arg value="${OUTPUT_SWF}"/>
</java>
</target>
Flex 4.6 SDK と Air 3.4 ベータ SDK を使用し、SDK の airmobile-config.xml を設定ファイルとして使用しています。
しかし、これを実行すると、次のエラーが発生します。
4. Package Application:
[java] Exception in thread "main" java.lang.Error: Unable to find named traits: mx.core::SoundAsset
[java] at adobe.abc.Domain.resolveTypeName(Domain.java:232)
[java] at adobe.abc.Domain.resolveTypeName(Domain.java:149)
[java] at adobe.abc.GlobalOptimizer$InputAbc.resolveTypeName(GlobalOptimizer.java:272)
[java] at adobe.abc.GlobalOptimizer$InputAbc.readInstance(GlobalOptimizer.java:1000)
[java] at adobe.abc.GlobalOptimizer$InputAbc.readAbc(GlobalOptimizer.java:390)
[java] at adobe.abc.GlobalOptimizer$InputAbc.readAbc(GlobalOptimizer.java:278)
[java] at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:320)
[java] at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler.java:516)
[java] at com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:80)
[java] Compilation failed while executing : ADT
オーディオの [Embed] タグをすべて削除しても、エラーは引き続き発生しますが、「mx.core::ByteArrayAsset」に関するエラーが表示されます。プロジェクト内のすべての [Embed] タグを削除すると、正常にコンパイルされます。
コードに次の行を追加して、SoundAsset クラスを強制的に埋め込もうとしました。
import mx.core.SoundAsset;
...
new SoundAsset();
Flex SDK にアクセスして、SoundAsset クラスと ByteArrayAsset クラスをコピーしてプロジェクトに配置しましたが、どれも役に立ちません。
[Embed] タグを保持したまま、ANT 経由で IPA ファイルをコンパイルする方法を教えてください。