自從 Flash 7 之後,Macromedia (已被 Adobe 收購) 就一直未對 Linux 平台釋出新版 Flash Player. 去年年底 Flash Player 的產品經理 Emmy Huang 在她的 blog 提到 Adobe 正在開發 Flash 8.5 的 Linux 版本,今年年中宣佈將支援 Flash 9 版本。終於,上個月 18 號,Adobe 釋出了 Flash 9 for Linux beta. 你可於 Adobe Lab 下載 Flash Player 9 Installers for Linux.
我已經在日常使用 Linux 為作業系統約五、六年,無論上網、文書、開發 (當然得視平台供應商的軟體而定,常常還是用 rdesktop 連上 Windows 編譯程式。),一直保持使用 Debian 的習慣。因此我得回答 Jeremy,Flash Player 9 真的對我很重要。我可以開始快樂的瀏覽網站,而不用老被要求升級的畫面干擾。:D
目前安裝的版本 (FP9_plugin_beta_101806.tar.gz) 有點小問題,在 LC_MESSAGES 設為 zh_TW.UTF-8 的狀態下,如果離開某個含有 Flash 的頁面,Firefox 會 “segmation fault”,猜測是 mo 檔案有問題或軟體訊息處理時未處理字碼的關係。試著以 gdb trace 看不出所以然:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1491953984 (LWP 1732)]
0xa7d94466 in pthread_spin_lock () from /lib/tls/libpthread.so.0
(gdb) bt
#0 0xa7d94466 in pthread_spin_lock () from /lib/tls/libpthread.so.0
#1 0x9fa8db79 in NP_Shutdown ()
from /usr/lib/flashplugin-nonfree/libflashplayer.so
#2 0x9f9fd0c8 in NP_Shutdown ()
from /usr/lib/flashplugin-nonfree/libflashplayer.so
#3 0x9f9f8368 in NP_Shutdown ()
from /usr/lib/flashplugin-nonfree/libflashplayer.so
#4 0x9f9f1211 in ?? () from /usr/lib/flashplugin-nonfree/libflashplayer.so
#5 0x9f9f58f7 in ?? () from /usr/lib/flashplugin-nonfree/libflashplayer.so
#6 0x09265014 in ?? ()
#7 0xafa42778 in ?? ()
#8 0x00000000 in ?? ()
可將 LC_MESSAGES 設定為 zh_TW 或其他語系即可。
Mike M. 提到另外一位開發者 Tinic Uro 為 Flash Player for Linux 做了延伸 API (Additional Interface Support for Linux),由於不同的 distribution 的各種 API (如 audio, secure sockets 與 Unicode 等) 略有差異,而且時常更動版本。這個所謂延伸 API 的功能可以讓開發者針對不同的 platform 或 distribution 使用不同的軟體 API. 例如如果你的核心未使用 ALSA,那即可透過 flashsupport API 改用 OSS 提供音效。
預設的 Flash Player for Linux 已經支援 v4l, 但是理論上也可以透過 flashsupport API 改為支援 v4l2,或支援 YUV420 以外的影像來源。
另外一個好消息是新版的 Flex 2 與 Flex Data Services Express 也支援 Linux 平台了。新版的 SDK 只需要 Java 即可執行。終於,我可以在 Linux 下使用官方版本的工具製造 Flash 了。可惜尚未有官方版本的 Flex Builder 2 for Linux, 只有 Flex Builder 2 for Macintosh 版本。由於 Flex Builder 2 是基於 Eclipse 所開發,feiy 在 Adobe 推出 Mac 版之前就先改了一份 Flex Builder 2 for Linux. 😀
Pingback: richliu's blog()