ANE跨平臺as3轉object-candroiddesktop
引用:http://sswilliam.blog.163.com/blog/static/189696383201191094227313/
是不一個不錯的跨平臺路徑,但是整合也會導致效能下降,但總體來說划算
簡介
AIR3剛剛釋出,帶來的最令人激動的新特性莫過於Native Extension了。Native Extension就是讓AIR可以呼叫各個平臺上的原生程式碼(native code, 如ios上的object-c,android上的java,desktop上的c++,c#等),從而完成對AIR中Actionscript API的自定義擴充套件。即可以讓開發者通過編寫基於平臺的原生程式碼擴充套件ActionScript。從而完成一些原有Actionscript無法完成的功能。
眾所周知,AIR是Flash平臺的一個重要組成部分。其優勢在於顯示和渲染,開發者可以使用ActionScript或者Flex快速高效的開發出有良好使用者體驗的RIA應用。但是對於一些高效能的運算和對特定硬體裝置的呼叫,AIR由於自身的限制而無法實現。
在AIR 2中引入的NativeProcess的概念,從而讓AIR可以再桌面平臺可以啟動一個本地程式以協助AIR實現更多功能,AIR程式和NativeProcess的程式之間使用標準輸入輸出流(stdin,stdout,stderr)進行通訊。這裡需要說明一點,NativeProcess在windows上只能啟動exe,在mac上只能啟動dmg。其他任何格式的檔案都無法啟動。官方文件裡的範例啟動了一個.py檔案,經過實驗是無法執行的,只能是啟動python裡的python.exe,然後引數跟上相應的.py檔案的路徑,才能正確的執行python指令碼。NativeProcess大大擴充套件了AIR在桌面上的應用開發能力。
從AIR 2.6開始,AIR開始支援移動平臺,包括Android和iOS。在移動裝置上,由於裝置和作業系統的種種限制,NativeProcess就無法工作了。由於移動裝置的CPU普遍比桌面的CPU主頻要低很多,因此對程式的效能要求更高。同時不同的移動裝置的硬體設施各不相同(如陀螺儀,前後攝像頭,GPS等),AIR也無法完整及時的提供所有硬體裝置的API,因此,為了讓AIR能更好的適應移動平臺的開發,急需要一種讓AIR在移動裝置上執行原生程式碼的解決方案。從而NativeExtension應運而生。
最初引入Native Extension的版本是AIR 2.5 for TV。引入的目的主要是由於TV有很多特性不可能被AIR原生API所支援,如操縱電視訊道。因此adobe在AIR 2.5 for TV中加入了NativeExtension這個特性,讓AIR在TV上可以執行TV的原生程式碼從而更好的適應TV的開發。
隨著AIR在越來越多的平臺上被支援,NativeExtension所帶來的優勢越來越明顯,所以Adobe在AIR3中將這個特性擴充套件到了所有的平臺上。注意,是所有平臺而不僅僅是移動平臺,在桌面上也是可以使用NativeExtension的。
NativeExtension VS NativeProcess
NativeExtension與NativeProcess的主要區別在於,NativeProcess是新開一個程式完成相應的工作,而NativeExtension是AIR直接執行相應的原生程式碼,然後將結果返回給AIR。所有工作都在AIR本程式中完成。NativeExtension是讓開發者自己擴充套件ActionScript的API,在ActionScript與底層程式碼之間建立了一個橋接,讓開發基於系統的底層程式碼來擴充套件ActionScript。
NativeExtension VS Alchemy
Alchemy也是flash平臺擴充套件的一大利器,NativeExtension與Alchemy的主要區別在於, Alchemy是將C/C++程式碼編譯為AVM可以執行的位元組碼,並生成一個相應的swc檔案從而完成對Flash 平臺的擴充套件,由於是編譯為AVM可執行的位元組碼,因此Alchemy適用於Flash Player和AIR。NativeExtension是將原生程式碼打包進ane檔案,並且提供了從Actionscript到原生程式碼的橋接,真正執行原生程式碼的還是作業系統本身而非AVM。而且NativeExtension只適用於AIR而不適用於Flash Player。
簡單的來說,AIR NativeExtension就是一個帶有原生程式碼實現的SWC庫檔案。
組織結構
本文首先介紹NativeExtension的結構和實現原理,然後以最簡單的Hello World為例,介紹如何進行NativeExtension的開發,最後介紹如何使用AIR3的SDK進行NativeExtension專案的打包和部署。
相關文章
- rust跨平臺Rust
- [轉]:多程式等待的跨平臺實現
- 使用wxdindows開發跨平臺的介面(轉)
- 跨平臺編譯編譯
- .NET Core 跨平臺
- WPF跨平臺方案?
- rman 跨平臺支援
- VNC 跨平臺copyVNC
- JVM跨平臺原理JVM
- Java跨平臺原理Java
- 編寫跨平臺Java程式注意事項(轉)Java
- JAVA的跨平臺原理Java
- onethink支援跨平臺嗎
- 跨平臺技術演進
- Go跨平臺交叉編譯Go編譯
- 跨平臺級聯dataguard配置
- 跨平臺同步筆記工具筆記
- 跨平臺`ChatGpt` 客戶端ChatGPT客戶端
- ORACLE 跨平臺遷移方法Oracle
- .NET Core 跨平臺釋出
- 應用跨平臺問題?
- Oracle DataGuard跨平臺支援列表Oracle
- 跨平臺、跨主機共享鍵鼠方案(KVM)
- [Flutter翻譯]Flutter時代的多平臺VS跨平臺Flutter
- Oracle 10g 跨平臺傳輸 相容平臺列表Oracle 10g
- 打造跨平臺.NET Core後臺服務
- RedHat AS3配置 OpenLDAP(轉)RedhatS3LDA
- JVM筆記 -- Java跨平臺和JVM跨語言JVM筆記Java
- C# 跨平臺UI 技術C#UI
- NODE_ENV跨平臺設定
- 跨平臺開發框架的大旗框架
- 跨平臺渲染引擎之路:bgfx分析
- .Net Core與跨平臺時區
- ComPDFKit: 跨平臺框架PDF SDK框架
- 跨平臺開發框架 Lynx 初探框架
- 跨平臺的 SQL 客戶端SQL客戶端
- 跨 OS 平臺遷移 Oracle DBOracle
- 跨平臺遷移支援檢視