天天看點

air 移動開發配置檔案詳解

說明:

作者之前做過一年的flex air移動跨平台開發,在之前學習過程中,一直是将筆記記在了evernote上,有的筆記是自己寫的,也有的筆記是在網上看到,順手記下了的。 是以在這裡聲明下,如果在網上看到類似的或者是一模一樣的文章,請見諒。

因為找不到原文作者,是以,不在我的部落格裡說明是轉載自哪裡了,望原文作者見諒。

air 移動開發配置檔案詳解

目錄 

所需的 air 運作時版本 

應用程式辨別 

應用程式版本 

主應用程式 swf 

主螢幕屬性 

支援的配置檔案 

必需的本機擴充 

虛拟鍵盤行為 

--------------- 

某些應用程式描述符設定對所有移動裝置應用程式都很重要。 

使用應用程式描述符檔案的命名空間指定應用程式所需的 air 運作時版本。 

在 application 元素中配置設定的命名空間,很大程度上決定了應用程式可以使用哪些功能。例如,如果應用程式使用 air 2.7 命名空間,但使用者安裝了某個未來版本,那麼應用程式仍将參照 air 2.7 的行為(即使在未來版本中已經更改此行為)。隻有當您更改命名空間并釋出更新時,應用程式才會通路新的行為和功能。不過,安全修補程式不受此規則限制。 

如果裝置(如 android)所使用的運作時不同于應用程式使用的運作時,那麼當使用者沒有所需的 air 版本時,系統将提示使用者進行安裝或更新。在 iphone 等包含運作時的裝置上,不會發生這種情況(因為需要的版本和應用程式已經在一開始就打包在一起了)。 

使用根 application 元素的 xmlns 屬性指定命名空間。應該将下列命名空間用于移動應用程式(具體取決于您的目标移動平台): 

ios 4+ and iphone 3gs+ or android: 

<application xmlns="http://ns.adobe.com/air/application/2.7"> 

ios only: 

<application xmlns="http://ns.adobe.com/air/application/2.0"> 

注: 基于 air 2.0 sdk,packager for iphone sdk 提供針對 ios 3 裝置的支援。有關建構 ios 3 的 air 應用程式的資訊,請參閱建構 iphone 應用程式。air 2.6 sdk(和更高版本)在 iphone 3g、iphone 4 和 ipad 裝置上支援 ios 4 及更高版本。 

對于釋出的每個應用程式,以下幾個設定應該是唯一的。包括 id、名稱和檔案名。 

android 應用程式 id 

在 android 上,通過為 air id 加上字首“air.”将其轉換為 android 包名稱。這樣的話,如果 air id 是 com.example.myapp,那麼 android 包名稱是 air.com.example.myapp。 

<id>com.example.myapp</id> 

<name>my application</name> 

<filename>myapplication</filename> 

此外,如果該 id 在 android 作業系統上不是合法的包名稱,它會轉換成合法名稱。連字元會更改成下劃線;若任何 id 元件以數字開頭,會在前面加上大寫字母“a”。例如,id:3-goats.1-boat,會轉換成包名稱:air.a3_goats.a1_boat。 

注: 添加到應用程式 id 的字首可以用于辨別 android market 中的 air 應用程式。如果不希望應用程式因字首而被辨別為 air 應用程式,您必須對 apk 檔案進行解包,更改應用程式 id,并按照 opt-out of air application analytics for android 中的說明将其重新打包。 

ios 應用程式 id 

請将 air 應用程式 id 設定為與您在 apple ios provisioning portal 中建立的應用程式 id 比對。 

ios 應用程式 id 包含捆綁種子 id,後面跟着捆綁辨別符。捆綁種子 id 是 apple 配置設定給應用程式 id 的一個字元串,例如 5rm86z4djm。捆綁辨別符包含一個您選擇的反向域樣式名稱。捆綁辨別符可能以星号 (*) 結尾,表示通配符應用程式 id。如果捆綁辨別符以通配符結尾,您可以使用任意合法字元串替換該通配符。

例如: 

如果您的 apple 應用程式 id 為 5rm86z4djm.com.example.helloworld,則您在應用程式描述符中必須使用 com.example.helloworld。 

如果您的 apple 應用程式 id 為 96lpvweasl.com.example.*(通配符應用程式 id),則您可以使用 com.example.helloworld 或 com.example.anotherapp,或者以 com.example 開頭的其他 id。 

最後,如果您的 apple 應用程式 id 隻是捆綁種子 id 和通配符,如:38je93kjl.*,則您可以在 air 中使用任意應用程式 id。 

指定應用程式 id 時,請不要包括應用程式 id 的捆綁種子 id 部分。 

在 air 2.5 和更高版本中,可以在 versionnumber 元素中指定應用程式版本。不能再使用 version 元素。當為 versionnumber 指定值時,必須使用由點分隔的最多三個數字組成的序列,例如:“0.1.2”。版本号的每段最多可以具有三個數字。(即,“999.999.999”是允許的最大版本号)。不必将所有三段都包含在号碼中;“1”和“1.0”都是合法的版本号。 

也可以使用 versionlabel 元素來指定版本标簽。如果添加了版本标簽,就會顯示版本标簽,而不是像在 android 應用程式資訊螢幕等處一樣顯示版本号。必須為使用 android market 分發的應用程式指定版本标簽。如果沒有在 air 應用程式描述符中指定 versionlabel 值,則會将 versionnumber 值配置設定給 android 版本标簽字段。 

<!-- air 2.5 and later --> 

<versionnumber>1.23.7<versionnumber> 

<versionlabel>1.23 beta 7</versionlabel> 

在 android 上,air versionnumber 轉換為 android 整數 versioncode,轉換公式為:a*1000000 + b*1000 + c,其中 a、b 和 c 分别代表 air 版本号的組成部分:a.b.c。 

在 initialwindow 元素的 content 子元素中指定主應用程式 swf 檔案。在移動配置檔案中定位裝置時,必須使用 swf 檔案(不支援基于 html 的應用程式)。 

<initialwindow> 

    <content>myapplication.swf</content> 

</initialwindow> 

必須包括 air 包中的檔案(使用 adt 或 ide)。如果隻是引用應用程式描述符中的名稱,不會自動将此檔案包括進包中。 

initialwindow 元素的若幹子元素控制主應用程式螢幕的初始外觀和行為。 

aspectratio — 指定應用程式的初始顯示方式為 portrait 格式(高大于寬)、landscape 格式(高小于寬)或 any 格式(舞台可自動調整到任何方向)。 

<aspectratio>landscape</aspectratio> 

autoorients — 指定舞台是否應随着使用者旋轉裝置或做出與方向相關的其他手勢(如打開或關閉滑動鍵盤)而自動改變方向。如果設定為 false(預設),則舞台不會随裝置改變方向。 

<autoorients>true</autoorients> 

depthandstencil — 指定使用深度或模闆緩沖區。通常在處理 3d 内容時使用這些緩沖區。 

<depthandstencil>true</depthandstencil> 

fullscreen — 指定應用程式應占據裝置的整個顯示屏,還是與标準作業系統視窗樣式(如系統狀态欄)共享顯示屏。 

<fullscreen>true</fullscreen> 

rendermode — 指定運作時應使用圖形處理單元 (gpu) 還是主要的中心處理單元 (cpu) 渲染應用程式。通常,gpu 渲染可以提高渲染速度,但某些功能(例如某些混合模式和 pixelbender 篩選器)在 gpu 模式下無法使用。此外,不同裝置和不同裝置驅動程式的 gpu 功能和限制是不同的。應始終在盡可能多的裝置上測試應用程式,特别是使用 gpu 模式時。可以将渲染模式設定為

gpu、cpu、direct 或 auto。 預設值是 auto,該設定目前回退到 cpu 模式。 

注: 為了利用具有移動平台 air flash 内容的 gpu 加速,adobe 建議使用 rendermode=”direct”(即 stage3d),而不是 rendermode=”gpu”。adobe 官方支援和建議以下基于 stage3d 的架構:starling (2d) 和 away3d (3d)。有關 stage3d 和 starling/away3d 的更多細節,請參閱http://gaming.adobe.com/getstarted/。 

<rendermode>direct</rendermode> 

gpu 模式的限制為: 

flex 架構不支援 gpu 渲染模式。 

不支援濾鏡 

不支援 pixelbender 混合和填充 

不支援以下混合模式:圖層、alpha、擦除、疊加、強光、變亮和變暗 

不建議在播放視訊的應用程式中使用 gpu 渲染模式。 

在 gpu 渲染模式中,當虛拟鍵盤打開時,不會正确地将文本字段移動到可見的位置。若要確定文本字段在使用者輸入文本時可見,請使用舞台和軟鍵盤事件的 softkeyboardrect 屬性将文本字段移到可見區域。 

如果顯示對象無法通過 gpu 進行渲染,則根本不會顯示。例如,如果将濾鏡應用于顯示對象,則不會顯示該對象。 

注: 在 air 2.6 以上的版本中,ios 的 gpu 實作與在更早版本(air 2.0 版本)中使用的實作有很大的不同。适用不同的優化注意事項。 

您可以添加 supportedprofiles 元素,以指定您的應用程式支援哪些裝置配置檔案。針對移動裝置使用 mobiledevice 配置檔案。當使用 adobe debug launcher (adl) 運作應用程式時,adl 會将清單中的第一個配置檔案用作活動配置檔案。您也可以在運作 adl 時使用 -profile 标志,以在支援清單中選擇特定的配置檔案。如果您的應用程式在所有配置檔案下運作,則可以完全忽略

supportedprofiles 元素。在這種情況下,adl 會将桌面配置檔案用作預設的活動配置檔案。 

若要指定應用程式同時支援移動裝置和桌面配置檔案,并且您通常要在移動裝置配置檔案中測試應用程式,請添加以下元素: 

<supportedprofiles>mobiledevice desktop</supportedprofiles> 

支援 mobiledevice 配置檔案的應用程式可以使用本機擴充。 

在應用程式描述符中聲明 air 應用程式使用的所有本機擴充。下面的例子說明了用于指定兩個所需本機擴充的文法: 

<extensions> 

     <extensionid>com.example.extendedfeature</extensionid> 

    <extensionid>com.example.anotherfeature</extensionid> 

</extensions> 

extensionid 元素的值與擴充描述符檔案中的 id 元素的值相同。擴充描述符檔案是一個名為 extension.xml 的 xml 檔案。已打包在從本機擴充開發人員處接收到的 ane 檔案中。 

請将 softkeyboardbehavior 元素設定為 none,以便可以禁用自動平移和調整大小行為,運作時利用這些行為,可以確定在虛拟鍵盤出現後具有焦點的文本條目字段位于視圖中。如果您禁用該自動行為,則在虛拟鍵盤出現後,確定文本條目區域或其他相關内容可見就是您的應用程式的職責。您可以使用舞台的 softkeyboardrect 屬性,結合 softkeyboardevent

來檢測何時鍵盤将打開以及确定鍵盤遮住的區域。 

若要啟用該自動行為,請将該元素值設定為 pan: 

<softkeyboardbehavior>pan</softkeyboardbehavior> 

由于 pan 為預設值,省略 softkeyboardbehavior 元素也會啟用自動鍵盤行為。 

注: 當您同時使用 gpu 呈現時,不支援平移行為。