構(gòu)建Adobe AIR for TV本機擴展
當您構(gòu)建 AIR for TV 本機擴展時,您將構(gòu)建兩個版本的擴展:
- 設(shè)備綁定擴展。
 - 存根或模擬器擴展。
 
設(shè)備綁定擴展包括:
- 通常使用 C 或 C++ 編寫的本機實現(xiàn)。
 - 調(diào)用該本機實現(xiàn)的函數(shù)的實際 ActionScript 實現(xiàn)。
 - 存根或模擬器擴展是僅包含 ActionScript 的實現(xiàn)。
 
設(shè)備綁定擴展和存根擴展
當您為 Adobe® AIR® for TV 設(shè)備編寫本機擴展時,您需要創(chuàng)建該擴展的兩個變體:
- 設(shè)備綁定擴展,也稱為實際擴展。
 - 存根擴展。
 
此外,您還可以根據(jù)情況提供第三個變體:模擬器擴展。
設(shè)備綁定擴展
設(shè)備綁定擴展是設(shè)備上安裝的變體。ActionScript 端調(diào)用本機實現(xiàn)的函數(shù)。您生成此實際 ActionScript 實現(xiàn)以及本機實現(xiàn),并創(chuàng)建一個 ZIP 文件。設(shè)備制造商將此文件解壓縮到設(shè)備上的特定目錄中。
存根擴展
存根本機擴展具有與實際 ActionScript 實現(xiàn)相同的 ActionScript 接口,但是 ActionScript 方法不做任何事情。存根擴展是僅包含 ActionScript 的擴展;它沒有本機實現(xiàn)。當您生成存根 ActionScript 實現(xiàn)時,您將創(chuàng)建一個 ANE 文件。
AIR 應用程序開發(fā)人員使用此 ANE 文件達到三個目的:
- 編譯使用本機擴展的 AIR 應用程序。
 - 在臺式計算機而不是目標設(shè)備上運行 AIR 應用程序。
 - 包括在 AIR 應用程序軟件包中。
 
模擬器擴展
可選的第三種變體是模擬器擴展。此實現(xiàn)也具有與實際 ActionScript 實現(xiàn)相同的 ActionScript 接口。不過,它的 ActionScript 方法在 ActionScript 中模擬擴展的行為。像存根擴展一樣,模擬器擴展是僅包含 ActionScript 的擴展;它沒有本機實現(xiàn)。當您生成模擬器 ActionScript 實現(xiàn)時,您將創(chuàng)建一個 ANE 文件。
AIR 應用程序開發(fā)人員可以使用模擬器擴展 ANE 文件編譯他們的應用程序。與使用存根擴展進行測試相比,他們可以使用此 ANE 文件在臺式計算機上更加徹底地測試應用程序。他們還可以將模擬器擴展包括在 AIR 應用程序軟件包中。
注: 您可以創(chuàng)建一個模擬器擴展,作為存根擴展的替代品或輔助品。
設(shè)備綁定擴展、存根擴展和模擬器擴展的使用
AIR 應用程序開發(fā)人員使用存根和模擬器擴展完成下列工作:
- 使用存根擴展或模擬器擴展編譯 AIR 應用程序。
 - 使用存根擴展或模擬器擴展在臺式計算機上測試應用程序。
 - 將存根擴展或模擬器擴展打包到它們的可分發(fā) AIR 應用程序中。
 
注: 如果您為 AIR 應用程序開發(fā)人員同時提供了存根和模擬器擴展,請告訴他們將哪個擴展與他們的可分發(fā)應用程序一起打包。
當 AIR 應用程序在設(shè)備上運行時,AIR for TV 將執(zhí)行下列操作:
- 在設(shè)備上尋找相應的設(shè)備綁定(實際)擴展。
 - 如果該擴展存在,則 AIR for TV 會加載它以供 AIR 應用程序使用。
 - 如果該擴展不存在,AIR for TV 將改為加載與應用程序一起打包的存根或模擬器擴展。
 
為擴展創(chuàng)建簽名證書
您可以選擇對本機擴展進行數(shù)字簽名。對擴展簽名是可選的。
默認情況下,AIR for TV 生成實用程序使用虛假證書。該虛假證書僅適用于測試.
編寫本機實現(xiàn)
對于 AIR for TV 而言,您的擴展的本機實現(xiàn)是 AIR for TV 模塊。
AIR for TV 分發(fā)包提供了擴展開發(fā)工具包 (EDK),用于編寫和生成您的擴展的本機實現(xiàn)。
EDK 包括下列部分:
C 擴展 API 頭文件:
- <AIR for TV installation directory>/products/stagecraft/include/ae/edk/FlashRuntimeExtensions.h
 
該頭文件聲明本機實現(xiàn)使用的 C 類型和函數(shù)。
一個位于以下源文件中的擴展模塊實現(xiàn):
- <AIR for TV installation directory>/products/stagecraft/source/ae/edk/ExtensionBridge.cpp
 
請不要修改此擴展模塊實現(xiàn)。當您生成您的本機實現(xiàn)時,必須在您的內(nèi)部版本中包括此源文件。
生成您的設(shè)備綁定擴展所需的生成文件支持。
注: AIR for TV EDK 要求將 FREInitializer() 方法命名為 Initializer(),將 FREFinalizer() 方法命名為 Finalizer()。
將 ActionScript 和本機代碼放入目錄結(jié)構(gòu)中
設(shè)備綁定擴展是特定于硬件平臺的。當您開發(fā)設(shè)備綁定擴展時,請將您的文件放入您的平臺的子目錄中。此子目錄位于以下目錄中:
| <AIR for TV installation directory>/products/stagecraft/thirdparty-private/<yourCompany>/stagecraft-platforms/<yourPlatform>/edk | 
例如,公司 A 使用以下子目錄來進行面向其平臺 B 的開發(fā)工作:
| <AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk | 
請將您的 C 實現(xiàn)的頭文件和源文件放入 <您的平臺>/edk 目錄或其子目錄中。例如,將您的擴展 .cpp 和 .h 文件在放入以下目錄中:
|   < | 
        
類似地,將您的實際 ActionScript 實現(xiàn)的 .as 文件放入 <您的平臺>/edk 目錄或其子目錄中。例如:
|   < | 
        
另外,請將您的存根或模擬器 ActionScript 實現(xiàn)的 .as 文件放入 <您的平臺>/edk 目錄或其子目錄中。例如:
| 
               <AIR for TV installation directory>  | 
        
注:pAIR for TV 提供的擴展示例位于目錄 <AIR for TV 安裝目錄>/products/stagecraft/source/edk 中。請不要將您的擴展文件放入此目錄中。
創(chuàng)建 .mk 文件
與其他 AIR for TV 模塊一樣,要生成您的擴展模塊,您首先需要創(chuàng)建 .mk 文件。.mk 文件的主要用途是指定要生成的源文件。
要創(chuàng)建 .mk 文件,請執(zhí)行下列操作:
復制以下目錄中的 PlatformEDKExtension_HelloWorld.mk 文件或 PlatformEDKExtension_Process.mk 文件:
| <AIR for TV installation directory>/products/stagecraft/source/ae/edk/helloworld/ | 
或
| <AIR for TV installation directory>/products/stagecraft/source/ae/edk/process/ | 
將其復制到:
| <AIR for TV installation directory>/products/stagecraft/thirdparty-private/<yourCompany>/stagecraft-platforms/<yourPlatform> | 
- 
    
此目錄與包含您的平臺的 Makefile.config 文件的目錄相同。
 - 
    
將 .mk 文件重命名為 PlatformEDKExtension_<您的擴展名稱>.mk。AIR for TV 生成實用程序自動通過此命名約定發(fā)現(xiàn) .mk 文件。
請始終使用 PlatformEDKExtension_ 作為 .mk 文件名稱的開頭。
 - 
    
編輯 .mk 文件中標有“REQUIRED”的部分。
 
進行下列必要的修改:
- 
    
將 SC_EDK_EXTENSION_NAME 設(shè)置為擴展名稱。將該變量設(shè)置為 PlatformEDKExtension_<您的擴展名稱>.mk 中 <您的擴展名稱> 的值。
 - 
    
將 SC_EDK_EXTENSION_PACKAGE 設(shè)置為擴展軟件包名稱。將該值設(shè)置為在您的擴展的 ActionScript 端使用的軟件包名稱。
生成實用程序?qū)⒃撝涤米鲾U展的擴展描述符文件中 <id> 元素的值。它還使用此值和 .ane 擴展文件名命名生成的 ANE 文件。
 - 
    
將 SC_EDK_EXTENSION_VERSION 設(shè)置為擴展的版本號。
生成實用程序?qū)⒃撝涤米鲾U展的擴展描述符文件中 <versionNumber> 元素的值。
 - 
    
設(shè)置 SC_MODULE_SOURCE_DIR、SC_MODULE_SOURCE_FILES 和 SC_ADDITIONAL_MODULE_OBJ_SUBDIRS 以指定 AIR for TV 提供的本機實現(xiàn)文件。
注: 請不要從該列表中刪除 ExtensionBridge.cpp。請刪除 HelloWorld 或 Process 擴展實現(xiàn)文件。通常,不要將您的擴展的源文件添加到該列表中。例如:
 
| 
             SC_MODULE_SOURCE_DIR := $(SC_SOURCE_DIR_EDK) SC_MODULE_SOURCE_FILES := ExtensionBridge.cpp  | 
        
設(shè)置 SC_PLATFORM_SOURCE_DIR 和 SC_PLATFORM_SOURCE_FILES 以指定您的擴展的本機實現(xiàn)文件。例如:
| 
             SC_PLATFORM_SOURCE_DIR := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/native SC_PLATFORM_SOURCE_FILES := \ MyExtension.cpp \ helper\MyHelperClass1.cpp \ helper\MyHelperClass2.cpp  | 
        
將 SC_EDK_AS_SOURCE_DIR 設(shè)置為包含您的擴展的實際(而非存根)實現(xiàn)的 ActionScript 文件的目錄。例如:
| SC_EDK_AS_SOURCE_DIR := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/as/real | 
注: 該目錄是您的 ActionScript 軟件包的基本目錄。例如,假定有一個名為 tv.adobe.extension.example 的 ActionScript 軟件包。目錄 tv、adobe、extension 和 example 是 SC_EDK_AS_SOURCE_DIR 的后續(xù)子目錄。
設(shè)置 SC_EDK_AS_CLASSES 以列出實際 ActionScript 實現(xiàn)定義的每個 ActionScript 類。例如:
| SC_EDK_AS_CLASSES := MyExtension \ MyHelperClass1 \ MyHelperClass2 | 
將 SC_EDK_AS_SOURCE_DIR_AUTHORING 設(shè)置為包含您的擴展的存根或模擬器實現(xiàn)的 ActionScript 文件的目錄。例如:
| SC_EDK_AS_SOURCE_DIR_AUTHORING := $(SC_PLATFORM_MAKEFILE_DIR)/edk/myExtension/as/stub | 
注: 該目錄是您的 ActionScript 軟件包的基本目錄。例如,假定有一個名為 tv.adobe.extension.example 的 ActionScript 軟件包。目錄 tv、adobe、extension 和 example 是 SC_EDK_AS_SOURCE_DIR_AUTHORING 的后續(xù)子目錄。
設(shè)置 SC_EDK_AS_CLASSES_AUTHORING 以列出存根或模擬器 ActionScript 實現(xiàn)定義的每個 ActionScript 類。例如:
| SC_EDK_AS_CLASSES_AUTHORING := MyExtension \ MyHelperClass1 \ MyHelperClass2 | 
安裝第三方庫
生成 AIR for TV 需要某些第三方庫。
如果您僅生成您的擴展模塊,而不是生成所有 AIR for TV,則需要的庫有:
AIR 3 SDK
從 http://www.adobe.com/products/air/sdk/ 中選擇下載 Mac OS X。
創(chuàng)建一個目錄以包含 .tbz2 文件的內(nèi)容。例如:
| /usr/AIRSDK | 
將 .tbz2 文件的內(nèi)容解壓到此目錄中。
| tar jxf AdobeAIRSDK.tbz2 | 
設(shè)置 PATH 環(huán)境變量以包括 AIR SDK bin 目錄。在本示例中,該 bin 目錄是 /usr/AIRSDK/bin。
Open Source Flex® SDK。
從 http://opensource.adobe.com/wiki/display/flexsdk/Downloads 下載 Open Source Flex SDK 最新發(fā)行版的 ZIP 文件。
創(chuàng)建一個目錄以包含 ZIP 文件的內(nèi)容。例如:
| /usr/flexSDK | 
將 ZIP 文件的內(nèi)容解壓到此目錄中。
| unzip flex_sdk_4.5.1.21328_mpl.zip | 
設(shè)置 PATH 環(huán)境變量以包括 Flex SDK bin 目錄。在本示例中,該 bin 目錄是 /usr/flexSDK/bin。
Java運行時。Flex SDK 需要最新的 Java 運行時。如果您的開發(fā)系統(tǒng)還不具有 Java 運行時,請訪問 http://www.java.com/en/download/manual.jsp 獲取下載包和安裝說明。
設(shè)置 PATH 環(huán)境變量以包括 Java bin 目錄。
運行生成實用程序
具體說來,在生成擴展時,生成實用程序在 Makefile.config 中使用下列生成變量:
- 
    
SC_ZIP
 - 
    
SC_UNZIP
 - 
    
SC_PLATFORM_NAME
 - 
    
SC_PLATFORM_ARCH
 
在創(chuàng)建您的平臺的 Makefile.config 文件和您的擴展的 .mk 文件后,您可以使用生成實用程序執(zhí)行下列操作:
- 
    
生成 AIR for TV 的所有組件。
 - 
    
僅生成您的擴展模塊。
 
- 
    
確保已設(shè)置環(huán)境變量 SC_BUILD_MODE 和 SC_PLATFORM。
 - 
    
如果您使用自己創(chuàng)建的證書對您的擴展進行簽名,請設(shè)置環(huán)境變量 SC_EDK_ANE_CERT_FILE 和 SC_EDK_ANE_CERT_PASSWD。
將 SC_EDK_ANE_CERT_FILE 設(shè)置為您的證書的相對或絕對路徑。相對路徑相對于生成目錄 <AIR for TV 安裝目錄>/stagecraft/build/linux。
將 SC_EDK_ANE_CERT_PASSWD 設(shè)置為該證書的密碼。
如果您不設(shè)置這些環(huán)境變量,生成實用程序?qū)⑹褂媚J的虛假證書,并且顯示警告消息。該虛假證書僅適用于測試。
 - 
    
更改到目錄:
<AIR for TV installation directory>/products/stagecraft/build/linux  
輸入以下命令:
| make | 
要僅生成您的擴展模塊,請執(zhí)行下列操作:
- 
    
確保已設(shè)置環(huán)境變量 SC_BUILD_MODE 和 SC_PLATFORM。
 - 
    
如果您使用自己創(chuàng)建的證書對您的擴展進行簽名,請如前面的步驟所述,設(shè)置環(huán)境變量 SC_EDK_ANE_CERT_FILE 和 SC_EDK_ANE_CERT_PASSWD。
 - 
    
更改到目錄 stagecraft/build/linux。
 - 
    
輸入以下命令:
 
| make PlatformEDKExtension_<your extension name> | 
您可以用以下命令刪除以前為您的擴展生成的所有對象:
| make clean-PlatformEDKExtension_<your extension name> | 
您可以用以下命令刪除以前為您的擴展生成的所有對象,然后重新生成這些對象:
| make rebuild-PlatformEDKExtension_<your extension name> | 
重要說明: 如果您的生成計算機使用了防火墻,則生成實用程序有時會失敗。防火墻可能禁止訪問 ADT 在將本機擴展打包為 ANE 文件時使用的時間戳服務器。這一失敗會產(chǎn)生以下錯誤輸出:
| Could not generate timestamp: Connection timed out | 
要避免該失敗,請修改生成實用程序使用的 ADT 命令。編輯以下目錄中的文件 extension.mk:
| <AIR for TV installation directory>/stagecraft/source/ae/edk/ | 
查找以下行:
| $(SC_EXEC_CMD) $(SC_ADT) -package \ | 
將參數(shù) -tsa none 添加至該命令,如下所示:
| $(SC_EXEC_CMD) $(SC_ADT) -package-tsa none\ | 
生成實用程序擴展輸出
生成實用程序為您的擴展創(chuàng)建兩個文件。它將這些文件放入下列目錄之一,具體取決于您為 SC_BUILD_MODE 指定了 debug 還是 release:
| 
             <AIR for TV installation directory>/build/stagecraft/linux/<yourPlatform>/debug/bin <AIR for TV installation directory>/build/stagecraft/linux/<yourPlatform>/release/bin  | 
        
生成實用程序為您的擴展創(chuàng)建的文件有:
- 
    
一個 ZIP 文件,包含要在設(shè)備上部署的設(shè)備綁定擴展。
 - 
    
一個 ANE 文件,包含存根或模擬器擴展。AIR 應用程序開發(fā)人員使用該 ANE 文件來生成他們的應用程序。他們還使用它在使用 ADL 的臺式計算機上測試他們的應用程序。他們還將該 ANE 文件與他們的應用程序一起打包為 AIRN 軟件包。
 
同時生成存根和模擬器擴展
有時,除了實際擴展以外,您還想同時生成存根和模擬器擴展。通常,您指示 AIR 應用程序開發(fā)人員執(zhí)行以下操作:
- 
    
使用模擬器擴展在臺式計算機上進行測試。
 - 
    
將存根擴展與他們的應用程序一起打包為 AIRN 軟件包。
 
要同時生成存根和模擬器擴展,請執(zhí)行以下操作:
- 
    
創(chuàng)建存根擴展及其 .mk 文件。確保您可以生成存根擴展和實際擴展。
 - 
    
為您的模擬器實現(xiàn)創(chuàng)建一個目錄,該目錄需要是您的存根實現(xiàn)目錄的兄弟目錄。例如:
<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/stub
<AIR for TV installation directory>/products/stagecraft/thirdparty-private/CompanyA/stagecraft-platforms/PlatformB/edk/myExtension/as/simulator
 - 
    
制作您的擴展的 .mk 文件的副本。
 - 
    
在該副本中,編輯 SC_EDK_AS_SOURCE_DIR_AUTHORING 和 SC_EDK_AS_CLASSES_AUTHORING 的值。對這些值進行適當?shù)脑O(shè)置,以反映您的模擬器實現(xiàn)目錄和類。
 - 
    
重命名您的擴展的原始 .mk 文件,以保證它的安全。然后,將該副本重命名為您的擴展的 .mk 文件名:PlatformEDKExtension_<您的擴展名稱>.mk。
 - 
    
將您的平臺的 bin 目錄中的存根 ANE 文件移至某個安全的位置。否則,下一步操作會覆蓋該文件。
 - 
    
運行生成實用程序以生成實際擴展和您的模擬器擴展。
 















 
 
 
 
 
 
 