2010-07-07 6 views
6

में परिभाषित करता है मैं हडसन से एक फ्लेक्स एप्लिकेशन में बिल्ड नंबर पास करने की कोशिश कर रहा हूं।एक्शन स्क्रिप्ट

मुझे सशर्त संकलन पर एडोब का दस्तावेज़ (http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html) मिला है, ऐसा लगता है कि इसे हल करना चाहिए लेकिन मुझे कुछ याद आना चाहिए।

तो मेरी चींटी निर्माण फाइल में मेरे पास है: -

<mxmlc 
     file="${app.dir}/${application.name}.mxml" 
     output="${dist.dir}/${application.name}.swf" 
     context-root="${application.name}" 
     debug="true" 
     locale="${locales}" 
     allow-source-path-overlap="true"> 
     <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 
     <compiler.library-path dir="${lib.dir}" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 
     <define name="BUILD::BuildNumber" value="'20100707.800'"/> 
     <source-path path-element="${src.dir}"/> 
     <source-path path-element="${cfg.dir}"/> 
     <source-path path-element="${locale.dir}" /> 
</mxmlc> 

तो मैं फिर भी संकलक के साथ खारिज किया जाता है

public static const buildNumber:String = BUILD::BuildNumber; 

साथ प्राप्त करने का प्रयास कर रहा हूँ:

SomeModel.as(31): col: 47 Error: Access of undefined property BUILD.
[mxmlc] private static const _buildNumber:String = BUILD::BuildNumber;

कोई सुझाव?

+0

सशर्त संकलन के संबंध में दस्तावेज़ों के आधार पर; ऐसा लगता है कि आप चीजें ठीक से कर रहे हैं। मैं थोड़ी देर के नुकसान में हूँ। http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html। क्या फ्लेक्स कंपाइलर आपकी सार्वजनिक स्थिर कॉन्स को गेटटर/सेटर विधियों में बदल रहा है w/एक निजी var? क्या वह रूपांतरण किसी भी तरह से समस्या का कारण बन सकता है? – JeffryHouser

+0

हो सकता है। यह अब सीधे दृश्य में है।मैं इसे फ्लैश बिल्डर में -define + = BUILD :: BuildNumber, '00000000.000' अतिरिक्त आदेश अनुभाग में प्राप्त कर सकता हूं। यह सिर्फ चींटी mxmlc निर्माण से गुजरता नहीं है। – Decado

उत्तर

2

अन्य सुझावों का एक संयोजन यहाँ काम करने लगता है यह निश्चित रूप यद्यपि मेरे लिए काम करता है।

यह आपके build.xml में जाना चाहिए (यह मान लिया गया है कि आपके build.xml पहले से ही एक मूल्य सौंपा गया है इस बिंदु से पहले BUILD_NUMBER के लिए):

<mxmlc> 
    ... 
    <define name="CONFIG::build" value="&quot;${BUILD_NUMBER}&quot;" /> 
    ...  
</mxmlc> 

नोट किसी भी उद्धरण चिह्नों के बिना &quot; का उपयोग। ध्यान दें कि आप इस वाक्यविन्यास का उपयोग compc के साथ कर सकते हैं।

फिर अपने actionscript कोड कुछ इस तरह हो सकता है:

public static const buildNumber:String = CONFIG::build; 

मुझे नहीं लगता कि यह आवश्यक नहीं कॉन्फ़िग नाम स्थान उपयोग करने की आवश्यकता है, लेकिन यह एक लोकप्रिय सम्मेलन है।

0

Laurynas Stančikas द्वारा एक टिप्पणी करते हुए कहा कि आप &quot; का उपयोग करना चाहिए नहीं है:

To pass string with Ant (when using mxmlc task), use &quot; . For example:

<compiler.define name="NAMES::AppName" value="&quot;'FooBar'&quot;" /> 

आपको लगता है कि कोशिश की है?

बचने का प्रयास करें::

+0

मैंने यह कोशिश की है। हालांकि यह अमान्य है, चींटी शिकायत करती है कि आपके पास एक ही प्रविष्टि पर 'और " दोनों नहीं हो सकते हैं ... – Decado

0

मैं सिर्फ उद्धरण के साथ एक जावास्क्रिप्ट flashvars समस्या है, जो एक "कोशिश यह" विचार प्रेरित हल

< compiler.define नाम = "नाम :: AppName" मान = "\ 'FooBar \' "/ >

+0

बस सशर्त संकलन पर नवीनतम दस्तावेज मिला और एडोब कुछ इसी तरह दिखाता है। वे अधिकतर कमांड लाइन तर्क दिखा रहे हैं, लेकिन शायद बचने का अनुक्रम चींटी से गुज़र जाएगा। Http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html पर "पासिंग स्ट्रिंग्स" देखें –

1

यह निश्चित रूप से एक उद्धरण मुद्दा है। मैंने थोड़ी देर के लिए यह लड़ा। हालांकि मैं mxmlc और compc को चलाने के लिए एंटी में टैग का उपयोग करता हूं, इसलिए सुनिश्चित नहीं है कि मेरा संकल्प वही है या नहीं।

<arg value="-define+=ENV::build,&quot;${build.id}&quot;" /> 
<arg value="-define+=ENV::version,&quot;${build.version}&quot;" /> 

मैं सुझाव दे सकते हैं आप की कोशिश:

<define name="BUILD::BuildNumber" value="&quot;20100707.800&quot;"/>