2012年8月30日 星期四

[教學] 安裝Adobe Alchemy 在MAC OS X

Adobe 在2009 年的研究項目中, 曾經被喻為劃時代的Adobe Alchemy, 開發者以C/C++ 編寫核心, 給ActionScript 調用, 達至加速效果. 回到今天運作平台分裂嚴重, 對我們現在Windows, MAC, Android 及iOS 同樣可以分享, 當年這個技術實在意義重大.

Adobe Alchemy 基於LLVM 技術運行

現在為大家說明如何在MAC OS X 環境中, 運用Adobe Alchemy 編譯C/C++ 語言, 包裝給ActionScript 調用.

必須有以下的準備:

安裝步聚:
  1. 把Flash Builder 內的SDK bin 目錄設定為MAC OS X 的PATH 環境變數(PATH Environment Variables)
     - 打開.bash_profile 檔案, 在Terminal 輸入:
          touch ~/.bash_profile; open ~/.bash_profile
     - 在TextEdit 中, 把空白的.bash_profile 檔案更改成:
         (請把Adobe Flash Builder 4.6/4.6.0_AIR3.4 更改成正確路徑)
          PATH="$PATH:/Applications/Adobe Flash Builder 4.6/sdks/4.6.0_AIR3.4/bin"
          export PATH

     - 在TextEdit 中把.bash_profile 檔案儲存(Command+S)
     - 然後在Terminal 輸入:
          source ~/.bash_profile
    - 關閉Terminal (Command+Q)
  2. 測試是否設定正確, 重新開啟Terminal, 然後輸入:
      adt -version
    若步聚正確, 會顯示SDK 版本代號"3.4.0.3010"
  3. 把下載的Alchemy Toolkit Package 解壓存放於/Library/alchemy/
  4. 把游漂移至alchemy 目錄內, 在Terminal 輸入:
      cd /Library/alchemy
  5. 執行alchemy 目錄內的config, 在Terminal 輸入:
      ./config
  6. 在PATH 環境變數加入alchemy 相關資料:
     - 再次打開.bash_profile 檔案, 在Terminal 輸入:
          touch ~/.bash_profile; open ~/.bash_profile
     - 在TextEdit 中, 把.bash_profile 檔案更改成:
         source "/Library/alchemy/alchemy-setup"
         PATH="$PATH:/Applications/Adobe Flash Builder 4.6/sdks/4.6.0_AIR3.4/bin"
         PATH="$PATH:/Library/alchemy/achacks"
         export PATH

     - 在TextEdit 中把.bash_profile 檔案儲存(Command+S)
     - 然後在Terminal 輸入:
          source ~/.bash_profile
     - 關閉Terminal (Command+Q)
  7. 重新開啟Terminal, 分別輸入:
      alc-on

      gcc
    以上兩個指令, 不會出現"command not found" 錯誤訊息, 代表設定完成

範例編譯:

  1. 把游漂移至alchemy/samples/stringecho/ 目錄內, 在Terminal 輸入:
      cd /Library/alchemy/samples/stringecho/
  2. 在Terminal 輸入:
      alc-on; which gcc
    以上指令會顯示出gcc 路徑"/Library/alchemy/achacks/gcc"
  3. 把c 語言編譯成swc 元件, 在Terminal 輸入:
      gcc stringecho.c -O3 -Wall -swc -o stringecho.swc
  4. 若元件正確產生, 在Terminal 會顯示以下訊息: (若發生錯誤, 請看編譯錯誤修正)
    1911.achacks.swf, 259831 bytes written
    frame rate: 60
    frame count: 1
    69 : 4
    72 : 259761
    76 : 33
    1 : 0
    0 : 0
    frame rate: 24
    frame count: 1
    69 : 4
    77 : 506
    64 : 31
    63 : 16
    65 : 4
    9 : 3
    41 : 26
    82 : 471
    1 : 0
    0 : 0
      adding: catalog.xml (deflated 75%)
      adding: library.swf (deflated 70%)

編譯錯誤修正:

修正一
  • 若在編譯時, 出現以下錯誤:
    Array @ARGV missing the @ in argument 1 of shift() at /Library/alchemy/achacks/gcc line 218.
    我們需以在/Library/alchemy/achacks 的gcc 檔案的218 行, 加入"@"字元, 請更改成:
    { $path = shift(@ARGV) }

修正二
  • 若在編譯時, 出現以下錯誤:
    dyld: Library not loaded: /usr/lib/libltdl.3.dylib
      Referenced from: /Library/alchemy/bin/llvm-gcc
      Reason: image not found

    我們需要把游漂移至/usr/lib/ 目錄內, 在Terminal 輸入:
      cd /usr/lib/
    然後再在Terminal 輸入:
      sudo ln -s libltdl.7.dylib libltdl.3.dylib

使用swc 元件:

我們透過Adobe Alchermy 成功產生swc 元件, 在Flash Builder 設定swc 路徑後, 便可以使用:
package
{
  import flash.display.Sprite;
  import cmodule.stringecho.CLibInit;
  
  public class stringecho_mobile extends Sprite
  {
    public function stringecho_mobile()
    {
      var loader:CLibInit = new CLibInit;
      var lib:Object = loader.init();
      trace(lib.echo("foo"));
    }
  }
}

大家若在Windows 環境下安裝Alchemy, 請參考這個連結, 安裝原理與MAC 很相近.

Alchermy 安裝參考:
http://labs.adobe.com/wiki/index.php/Alchemy:Documentation:Getting_Started
更改PATH 環境變數參考:
http://hathaway.cc/2008/06/how-to-edit-your-path-environment-variables-on-mac-os-x/
編譯錯誤修正參考:
http://forums.adobe.com/message/3892045

沒有留言: