星期四, 5月 31, 2012

Air 3.3 使用 USB 對 iOS 程式除錯


Adobe Air SDK 3.3 Beta 釋出了一些 新的功能 測了一下 USB debugging for AIR iOS 這部分
首先當然是先把 3.3 Beta SDK & Air Player 裝一裝 我測試的程式如下

在發布時選擇發布成 ipa-debug-interpreter 或 ipa-debug 都可以
然後再加上 -listen [連接埠] 長的會像這樣
adt -package -target ipa-debug-interpreter -listen [連接埠] ....
連接埠如果不填 預設是 7936 ((之後會用到))
然後產出 ipa 檔後安裝進 iPhone 並啟動應用程式 應該會看到如下畫面

這時 開始->執行->cmd 跳出MS-DOS命令提示字元視窗 然後切換到放置 3.3 SDK 的目錄下
進到 lib\aot\idb 目錄裡 然後執行 idb -devices 應該會看到如下圖

然後輸入
idb -forward 8765 7936 2
8765 是本機連接埠 亂填一個數字即可 官方建議8000以上
7936 就是剛產生 ipa 時 -listen 的連接埠
2 是裝置的編號

這邊完成後 就切換到3.3 SDK 的目錄下的 bin 目錄 然後執行 fdb -p 8765 開啟 fdb 除錯功能
接下來在 (fdb) 提示列下輸入 r ((開始讀取除錯)) 應該就會看到如下圖

這時就可以開始除錯囉 fdb 除錯說明可以參考 http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ffb.html
這邊測一下設斷點跟打印變數值
首先先設定斷點 語法是
(fdb) break 44
會出現
中斷點 1: 檔案 RTMPPlayer.as,行 44
然後開始執行
(fdb) cont
當進入斷點時畫面會出現
中斷點 1,位於 RTMPPlayer.as:44 的 onClickStage()
 44                     trace("_currentTime=" + _currentTime);
這時可以執行其他操作 EX打印變數值
(fdb) print _currentTime
會出現
$1 = 0 (0x0)

其他 fdb 的操作就得參考官方說明 我不是很熟... 因為我都是用 FlashDevelop 裡面的 Start Remote Session 來除錯, 但目前找不到方式 讓 FlashDevelop 的除錯去監聽特定的連接埠(7936)...((不知道是不是跟參考資料中 說明最後面有寫到 Currently this feature is not supported on Flash Builder.))

USB 來除錯看起來似乎沒有用原本 WiFi 連結方式除錯方便...
如果都在一個區網裡 建議還是用 WiFi 簡單多了 而且還可以用 FlashDevelop 的除錯方便很多

參考資料 : http://labsdownload.adobe.com/pub/labs/flashplatformruntimes/shared/air3-3_flashplayer11-3_p3_releasenotes.pdf

星期五, 5月 25, 2012

First Air Mobile App 上架


最近的專案 手機部分 App 都上架了

Android 沒啥意外的順利上架, 硬要說就是付那US$25元時, Google 要求信用卡持有人身分證明卡了一下, 把 Google 要的資料(我們是附上身份證與信用卡帳單封面)一天後 Google Wallet 就開通了(不過又多等了一天 Google確認帳款有請到), 接下來就順利把 App 給放上去, 約莫一個小時後 Google Play 就可以搜尋下載了.

iOS 的第一次送審結果被說違反 20.1 & 20.2 退件(送出到退回大概經過8天)... 再送一次補了客戶的授權證明(針對 20.1) 跟 活動聲明(針對 20.2) 終於過關了(也大概是8天)~

這是第一個手機 App 也是第一個用 Air 開發的, 因為希望達到 60FPS 操作體驗, 所以就採用了 Starling Framework, 以下大概是有用到的功能或API:

  1. Adobe Air SDK 3.2
  2. Starling Framework 1.0
  3. Accelerometer
  4. Facebook Mobile API
  5. ANE - iNativeAlert : 跳出原生提示訊息用
  6. Camera
  7. CameraRoll(僅iOS)
  8. OSMF MediaPlayer : 用來播放影片的
  9. StageWebViewBridge : 與頁面 JavaScript 溝通,主要用途是 Google Analytics

因為 Starling Framework 所以在大部分的手機上 都可以跑到 60FPS, 但也因為 Starling 有些內建的功能沒法用或有問題,
1. CameraUI 沒法用 : 當然如果把 Starling 的 handleLostContext 設 true 就可以用, 但這樣貼圖記憶體使用就會大增(好像是多1倍) 如果貼圖多的 APP 可能很快就掛了
2. CameraRoll 在 Android 上每點必當 : 每次呼叫 browseForImage() Android 手機幾乎都跳出 App, 曾經在三爽的S2成功過, 但後來還是一直當, 所以 Android 版就把 CameraRoll 拿掉了

另外 使用 Facebook Mobile API 也遇到一些問題, 主要的問題就是""...FB回應真的挺慢的... 還有 FB 的登入視窗跳出來後 預設文字是印尼文.... 這很奇怪, 因為開發時都沒這問題, 且也不是每次都會遇到, 直到要送審前才忽然變這樣... 不知道是不是 FB 改了判別語系的方式, 沒辦法... 只好在登入的 URL 動手腳, 登入的 URL 後面硬加上語系 &locale=zh_TW 就好了, 只是還是會先看到一下印尼文才跳到繁中畫面~ *(這個 Bug Facebook 已經修正了 https://developers.facebook.com/bugs/407246299295529?browse=search_4fab73cda08dd0f21498385 )

其他好像就還好沒啥太大問題, Air 開發好處就是可以無痛發布 iOS & Android 的 App, 基本上我們準備了寬度 320,480,540,640px 四種尺寸的貼圖檔, 大體上發佈出來都很OK, iPhone Android 都可以順利執行, App 下載位置在

Android : https://play.google.com/store/apps/details?id=air.com.media_palette.reddotplan
iOS : http://itunes.apple.com/tw/app/hong-dian-ji-hua/id524902106?l=zh&mt=8

可以下載玩玩看, 說不定還會不小心抽中 Honda CIVIC 一台~


星期二, 5月 22, 2012

Adobe Air Mobile App 送 iOS 審核


前陣子把 Air App 送 iOS 審核, 流程記錄一下,
itunes connect 部份的前置工作就不多說了
反正就是處理到狀態變成 "Waiting For Upload" 就可以打開 Mac 的 Application Loader 準備上傳了*
因為上傳僅接受 ZIP 檔, 所以我的做法是

1. 把 XXXX.ipa 複製到 Mac 裡
2. 在 Mac 把 XXXX.ipa 更名為 XXXX.zip
3. 然後解壓縮出 Payload 目錄
4. 點進 Payload 目錄應該會看到 XXXX.app 然後壓縮這檔案(目錄)為 XXXX.zip
5. 用 Application Loader 上傳這 ZIP 吧~ 完成~等審核~

P.S.
Mac 必須有安裝 Xcode, 如果直接用 Application Loader(itunes connect裡面下載的) 去傳會發生錯誤, 在 Snow Leopard 先裝了 Xcode 4.2 for Snow Leopard 再用裡面的 Application Loader 去上傳 App 就可以了

另外 我在 Lion 上也傳過 不過因為 Xcode 4.3.2 for Lion 是一個 App 的型態, 我找不到內附的 Application Loader... 所以跑去itunes connect裡面下載 然後上傳也沒問題