2009-08-06 15 views
5

मेरे पास एक फ्लेक्स प्रोजेक्ट है और यदि मैं अपने एसएफएफ पर आरएसएल के साथ फ्लैश बिल्डर का उपयोग कर एप्लिकेशन का रिलीज संस्करण 115k है। अगर मैं एंटी का उपयोग कर एक ही एप्लीकेशन बनाता हूं तो एसएफएफ 342k है। आरएसएल के बिना एसएफएफ 520k है।मैं अपनी चींटी जेनरेटेड एसएफएफ को जितना संभव हो सके छोटा कर सकता हूं?

फ्लैशबिल्डर द्वारा निर्मित एक के रूप में मैं swf को छोटा कैसे प्राप्त करूं?

यहां मेरी चींटी फ़ाइल है मेरे पास एक और कार्य है जो आरएसएल की प्रतिलिपि बनाता है।

<project name="EUI Client Application" default="compileClientApp"> 

<target name="compileClientApp" depends="compileClientBundles"> 
    <mxmlc 
     file="${CLIENT_PROJECT.dir}/src/${CLIENT_PROJECT.app}.mxml" 
     output="${DEPLOY.dir}/${CLIENT_PROJECT.app}.swf" 
     keep-generated-actionscript="false" 
     actionscript-file-encoding="UTF-8" 
     incremental="false" 
     > 

     <runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/framework.swc"> 
      <url rsl-url="flex4_4.0.0.7791.swf"/> 
      <url rsl-url="framework_4.0.0.7791.swf"/> 
      <url rsl-url="framework_textLayout_4.0.0.7791.swf"/> 
      <url rsl-url="rpc_4.0.0.7791.swf"/> 
      <url rsl-url="textLayout_451.swf"/> 
     </runtime-shared-library-path> 

     <source-path path-element="${CLIENT_PROJECT.dir}/src" /> 

     <compiler.library-path dir="${LIBS.dir}" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 
     <compiler.library-path dir="${DEPLOY_BIN.dir}" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 

    </mxmlc> 
</target> 

<target name="generateWrapper"> 
    <html-wrapper 
     title="${CLIENT_APP_TITLE}" 
     file="${CLIENT_PROJECT.app}.html" 
     height="100%" width="100%" 
     bgcolor="white" application="app" 
     swf="${CLIENT_PROJECT.app}" 
     version-major="10" version-minor="0" version-revision="0" 
     history="true" output="${DEPLOY.dir}" /> 
</target> 

<target name="compileClientBundles"> 
    <compileBundle bundleName="Modules" source="${CORE_PROJECT.dir}/locale" /> 
</target> 

+0

क्या इस परियोजना के लिए फ्लेक्स/फ़्लैश बिल्डर में अपने संकलक तर्क हैं? – DyreSchlock

उत्तर

2

उत्तर लोगों के लिए धन्यवाद लेकिन यह उनमें से कोई भी नहीं था।

पता चला है सब मुझे क्या करना करने के लिए आवश्यक क्रम से साझा की गई-पुस्तकालय-पथ सामान को दूर करने के रूप में इस फ्लेक्स-config.xml फ़ाइल में पहले से ही किया गया था। मुझे स्थिर-लिंक-रनटाइम-साझा-पुस्तकालयों को झूठ में भी बदलना पड़ा (इसलिए यह गतिशील है)।

मैं अपने निर्माण निर्देशिका में फ्लेक्स-config.xml फ़ाइल की नकल की और का उपयोग करें कि तो मैं सुरक्षित रूप से परिवर्तन कर सकते हैं है।

यह BTW फ्लेक्स 4 के साथ है - nto यकीन है कि अगर मैं बहुत स्पष्ट है कि बनाया है।

मेरी चींटी फ़ाइल अब इस तरह दिखता है:

<project name="EUI Client Application" default="compileClientApp"> 

<target name="compileClientApp" depends="compileClientBundles"> 
    <mxmlc 
     file="${CLIENT_PROJECT.dir}/src/${CLIENT_PROJECT.app}.mxml" 
     output="${DEPLOY.dir}/${CLIENT_PROJECT.app}.swf" 
     keep-generated-actionscript="false" 
     actionscript-file-encoding="UTF-8" 
     optimize="true" incremental="false" 
     link-report="${DEPLOY_BIN.dir}/app_link_report.xml" 
     > 

     <load-config filename="${basedir}/flex-config.xml" /> 

     <define name="CONFIG::stub" value="false" /> 
     <define name="CONFIG::release" value="true" /> 

     <source-path path-element="${CLIENT_PROJECT.dir}/src" /> 

     <compiler.library-path dir="${LIBS.dir}" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 
     <compiler.library-path dir="${DEPLOY_BIN.dir}" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 
    </mxmlc> 
</target> 

<target name="generateWrapper"> 
    <html-wrapper 
     title="${CLIENT_APP_TITLE}" 
     file="${CLIENT_PROJECT.app}.html" 
     height="100%" width="100%" 
     bgcolor="white" application="app" 
     swf="${CLIENT_PROJECT.app}" 
     version-major="10" version-minor="0" version-revision="0" 
     history="true" output="${DEPLOY.dir}" /> 
</target> 

<target name="compileClientBundles"> 
    <compileBundle bundleName="Modules" source="${CORE_PROJECT.dir}/locale" /> 
</target> 

1

आप शायद बाहरी-पुस्तकालय-पथ विकल्प का उपयोग बाहरी libs के लिए पथ निर्दिष्ट करने के लिए की आवश्यकता होगी।

अधिक जानकारी के लिए the docs देखें।

जब आपके आवेदन संकलन RSLs उपयोग करने के लिए, आप निम्न आवेदन संकलक विकल्पों का उपयोग: SWF फ़ाइल का स्थान निर्दिष्ट करने के लिए

* runtime-shared-libraries Provides the run-time location of the shared library. 
* external-library-path|externs|load-externs Provides the compile-time location of the libraries. The compiler requires this for dynamic linking. 

उपयोग क्रम से साझा की गई-पुस्तकालयों विकल्प है कि रन रन पर आरएसएल के रूप में एप्लिकेशन लोड होता है। आप एप्लिकेशन के तैनाती स्थान से संबंधित एसडब्ल्यूएफ फ़ाइल का स्थान निर्दिष्ट करते हैं। उदाहरण के लिए, यदि आप वेब सर्वर पर web_root/पुस्तकालय निर्देशिका में library.swf फ़ाइल संग्रहीत करते हैं, और वेब रूट में अनुप्रयोग, तो आप पुस्तकालय/library.swf निर्दिष्ट करते हैं।

आप इस विकल्प के साथ एक या अधिक पुस्तकालय निर्दिष्ट कर सकते हैं। यदि आप एक से अधिक लाइब्रेरी निर्दिष्ट करते हैं, तो प्रत्येक लाइब्रेरी को अल्पविराम से अलग करें।

लाइब्रेरी की एसडब्ल्यूसी फ़ाइल का स्थान निर्दिष्ट करने के लिए बाहरी-लाइब्रेरी-पथ विकल्प का उपयोग करें या निर्देशिका को संकलित समय पर अनुप्रयोग संदर्भों को खोलें। संकलक इस विकल्प द्वारा निर्दिष्ट पुस्तकालय का उपयोग करके संकलन-समय लिंक जांच प्रदान करता है। आप लाइब्रेरी की सामग्री को परिभाषित करने वाले अलग-अलग वर्ग या XML फ़ाइल निर्दिष्ट करने के लिए बाहरी या लोड-बहिष्करण विकल्पों का भी उपयोग कर सकते हैं।

निम्नलिखित कमांड लाइन उदाहरण दो पुस्तकालयों का उपयोग करता है MyApp आवेदन संकलित:

mxmlc -runtime-साझा-पुस्तकालयों = ../libraries/CustomCellRenderer/library.swf, ../libraries/CustomDataGrid /library.swf बाहरी-पुस्तकालय-पथ = ../पुस्तकालयों/CustomCellRenderer, ../libraries/CustomDataGrid MyApp.mxml

पुस्तकालयों के क्रम महत्वपूर्ण है, क्योंकि आधार वर्ग वर्गों से पहले लोड किया जाना चाहिए जो उनका उपयोग करते हैं।

तुम भी एक विन्यास फाइल का उपयोग कर सकते हैं, जैसा कि निम्न उदाहरण दिखाता है:

../libraries/CustomCellRenderer ../libraries/CustomDataGrid ../libs/playerglobal.swc ../libraries/CustomCellRenderer/library.swf ../libraries/CustomDataGrid/library।swf

रनटाइम-साझा-पुस्तकालय विकल्प पुस्तकालय.swf फ़ाइलों का सापेक्ष स्थान है जब अनुप्रयोग तैनात किया गया है। बाहरी-लाइब्रेरी-पथ विकल्प एसडीसी फ़ाइल का स्थान या संकलन समय पर खुली निर्देशिका है। इस वजह से, जब आप इसे संकलित करते हैं तो आपको आवेदन के सापेक्ष पुस्तकालयों के तैनाती स्थानों को अवश्य जानना चाहिए। जब आप लाइब्रेरी बनाते हैं तो आपको तैनाती संरचना को नहीं जानना पड़ता है, क्योंकि आप एक एसडब्ल्यूसी फ़ाइल बनाने के लिए compc कमांड-लाइन कंपाइलर का उपयोग करते हैं।

1

अपने स्वयं के तर्क में अपने RSLs को अलग करने का प्रयास करें। यहां मेरे निर्माण पर यह है कि:

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/framework.swc"> 
    <url rsl-url="${rsl.url}/framework_3.2.0.3958.swz" /> 
    <url rsl-url="${rsl.url}/framework_3.2.0.3958.swf" /> 
</runtime-shared-library-path> 

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/datavisualization.swc"> 
    <url rsl-url="${rsl.url}/datavisualization_3.2.0.3958.swz" /> 
    <url rsl-url="${rsl.url}/datavisualization_3.2.0.3958.swf" /> 
</runtime-shared-library-path> 
0

आरएसएल का उपयोग करना, सच करने के लिए उपयोग नेटवर्क पैरामीटर सेट करने के लिए याद है, अन्यथा संकलित swf सुरक्षा त्रुटि शिकायत (आरएसएल लोड नहीं कर सकता) जब विभिन्न स्थान पर चलाते हैं।