使用Flex,在使用的條件編譯中創建了一個桌面和Web應用程序。它運行成功。現在,我希望爲桌面和網絡提供單個swc文件。因此創建了滿足該條件的圖書館項目。雖然在flex庫項目中使用條件編譯得到許多問題,如衝突變量名稱和重複函數等等,這是我在使用沒有使用swc文件的flex項目時所面臨的問題。Flex條件編譯 - 是否可以在flex庫項目中進行條件編譯?
所以現在的問題就出現了:是否有可能在flex庫項目上進行條件編譯?
使用Flex,在使用的條件編譯中創建了一個桌面和Web應用程序。它運行成功。現在,我希望爲桌面和網絡提供單個swc文件。因此創建了滿足該條件的圖書館項目。雖然在flex庫項目中使用條件編譯得到許多問題,如衝突變量名稱和重複函數等等,這是我在使用沒有使用swc文件的flex項目時所面臨的問題。Flex條件編譯 - 是否可以在flex庫項目中進行條件編譯?
所以現在的問題就出現了:是否有可能在flex庫項目上進行條件編譯?
編譯SWC時,可以通過傳遞參數-define
來指定編譯常量。然而,這隻會包含您使用該常數添加的任何代碼 - 即,您不能在包含SWC的項目中重置常量以獲得不同的結果。
以下是用於創建SWC的bat文件的代碼。將其複製到新文件中,並使用擴展名.bat保存。根據需要替換文件路徑。
@echo off
set flexroot=D:\Program Files\FlashDevelop\Tools\flexsdk\
set proj=D:\Dev\TestSWC\
cd %flexroot%bin\
compc.exe -source-path %proj%src -is %proj%src -optimize -define CONFIG::debug false -define CONFIG::release true -output %proj%bin\TestSWC.swc
pause
我用這個來構建一個包含單個類SWC文件,像這樣:
package
{
public class TestClass
{
public function sayHello():void
{
CONFIG::debug
{
trace("Hello debug");
}
CONFIG::release
{
trace("Hello release");
}
}
}
}
然後,我創建了另一個項目,包括深港西部通道和CONFIG ::調試標誌設置爲true
,並調用sayHello()
函數。它跟蹤"Hello release"
,因爲SWC是使用CONFIG :: release標誌編譯爲true
。
注意:從你看起來你想要做的事情來看,最好將源代碼作爲外部源代碼目錄而不是swc。這樣,它就是最終項目中定義的常量,用於確定添加或刪除的代碼 – divillysausages
引述docs:
的mxmlc編譯,您可以在編譯時通過常量的值來應用
它沒有提到compc命令,所以我敢肯定它是不可能。我也想知道在編譯過程中如何包含/排除部分代碼,這在技術上會起作用。已編譯的SWC將不再包含條件代碼。
你沒有收到你的報價。但是,「組件編譯器可以採用大部分應用程序編譯器選項」http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7a80.html。爲什麼組件編譯器不支持條件編譯? [我從來沒有嘗試過,雖然] – JeffryHouser
謝謝,我補充說。條件編譯文檔明確地位於「使用mxmlc,應用程序編譯器」下。正如我在我的回答中提到的,我不明白這在技術上如何工作。 –
SWC仍然被編譯。我曾經與一家計劃使用條件編譯作爲其SWC上水印方案一部分的組件供應商進行了交流;所以他們可以分發像Flextras這樣的「開發者版本」。但是,老實說,我從來沒有嘗試過。 IT聽起來像@divillysausages有一個工作的例子... – JeffryHouser
你的錯誤是什麼?請明確點。一些代碼審查/代碼共享也可能對此有所幫助。 – JeffryHouser