0

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 ファイルをコンパイルする方法を教えてください。

4

1 に答える 1

1

問題を解決しました!

問題は、ライブラリにリンクする方法にあったと思います。手作りのANT設定をすべて削除し、代わりにFlash Builderプロジェクトから設定をエクスポートして、それらを使用することになりました。

この記事の完全な詳細は、私の命を救いました: http://helpx.adobe.com/x-productkb/multi/compilation-results-flex-builder-flex.html

于 2012-08-06T12:54:51.043 に答える