2012年6月20日 星期三

flash builder 4.6發佈ios方法

每次創建就會忘記一次 所以這次就自己做一下筆記 (對常常在使用的人看來 是很簡單的 對我就....)

0.先創建一個 Flex Mobile Project





















接下來就Next Next 到Finish吧(理論上應該沒很有難啦 就是你要做啥就選好 then next)

產生了一個Mobile的基本框架



基本上 Flash builder 會幫你產生這兩個mxml 

ViewNavigatorApplication :主要的載入testIOSHomeView.mxml的框架 (程式Entry Point)

firstView="views.testIOSHomeView" : 引入主要參數設定

在display的實作上是在testIOSHomeView.mxml裡面

所以我就加一個view 去辨識我要放在device裡面秀出來看


我加入一個button來測試

==================

一般我們在發佈的時候
可以利用flash builder 裡面提供的虛擬機(iphone)來實際去看自己所設計的界面如何
如下:


但是這個會有問題 可能在實機中跟虛擬機中顯示的會有些差距
所以我們在開發的過程中都會直接用實機去操作
但是在實機中去使用的話 需要兩個東西
















需要 Certificate Provisioning file 來讓程式發佈成

這兩個每次我都想得很複雜

但是常常使用過後 沒再用了 就會忘記怎麼去要這兩個東西勒

所以我才要做一下筆記 讓自己以後看自己的blog就會知道這兩個是要幹嘛的

===================================題外話
利用window 去發佈成.ipa 可以參考這個
http://ued.sina.com/?p=472
flash IDE 是跨平台的 ~ 要這個認證只是一個依據 ~ 其實沒有一定要mac才可以發佈.ipa啦
===================================

本文是參考http://www.adobe.com/devnet/air/articles/packaging-air-apps-ios.html 來實際去做的
所以內文只是稍微把簡體翻成繁體 再加上一點自己的敘述而已

你需要一個Apple IOS 開發認證(採用P12)和一個配置文件。每個開發認證和配置文件均有開發和發行兩種版本。

開發配置文件包含一组數據信息,它能够將開發人員和設備與經過認可的 iOS 開發團隊綁定在一起,並且能够啟用用於測試的設備。 它包含一组 iOS 開發認證、若干設備 ID 和一个應用程試 ID,並且它必需安裝於你希望運行你的應用程式的每個設備上。

另一方面,發行配置文件可能包含設備數據信息,它依據你是否希望為特定設備的特别發行或通過 Apple App Store 創建應用程式包。Apple 只接受採用 App Store 發行配置文件創建的應用程式,但採用 App Store 配置文件創建的應用程式不能直接安裝到設備上。

0. 到iOS Developer Program中註冊


這個我可能會省略,這是要發佈app的話,你一定要到https://developer.apple.com中去索取和設定應用程式的一些相關資料,所以你一定要申請會員(US 99)才可以進行之後步驟的動作。


1. 登入iOS配置用戶(Provisioning Portal)



iOS 配置用戶(Provisioning Portal)是你創建應用程式 ID、註冊你希望在開發階段部署應用程式的 iOS 設備、上傳簽證簽名請求、批准和下載開發人員憑證以及創建和下載配置文件的地方。 瀏覽到 Apple Developer 網站,然後點擊 Member Center link。 登入到 Member Center,然後點擊 iOS Provisioning Portal 下面的link。

2.點選到APP ID選單



你希望在 iOS 設備上部署的每個應用程式(或應用程式组)必需具有一個 App ID;它是由一個 Bundle Seed ID(也稱為App ID前綴)和一个 Bundle Identifier(也稱為App ID 後綴)组成。 轉到 iOS Provisioning Portal 的 App IDs 頁面,然後點擊 New App ID。 在 Manage 標籤上,輸入你的應用程式(或應用程式组)的描述,生成一個新的 Bundle Seed ID(在下拉選單中選取 Generate New),然後輸入一個 Bundle Identifier(例如,com.adobe.samples.*)。


App ID 是一個 Bundle Seed ID(一個生成的10字符的唯一字符串)和一個 Bundle Identifier 的组合。 推薦的實際方法是在 App ID 的 Bundle Identifier 部分使用一個反向域名式樣(reverse-domain name style)字符串。

你指定的 Bundle Identifier 必需與在 AIR application-descriptor 文件中设置的應用程式ID匹配。 例如,如果你為 samples.testIOS 指定一個 Bundle Identifier,則app.xml 文件的ID也要叫
samples.testIOS

3. 從itunes 獲取ios設備 id


你希望在上面運行或調適應用程式的設備必需在用於對應用程式打包的配置文件中指定;因此你必需在 iOS Provisioning Portal 中對這些設備進行註冊。 為了對設備進行註冊,你需要其唯一的設備ID。
將你的 iOS 設備連接到你的計算機並且打開 iTunes。在 iTunes中,在 Devices 部分選中你的設備,然後瀏覽到 Summary 標籤。 點擊 Serial Number 標籤以便顯示相應的 Identifier 字段和40字符的 UDID。按下 Command/Ctrl+C 將該 UDID 複製到你的剪貼簿上。

4.在 iOS Provisioning Portal 中註冊 iOS 設備。


一旦你擁有 iOS 設備 ID,你可以在 iOS Provisioning Portal 中對他們進行註冊。




返回到 iOS Provisioning Portal,然後瀏覽到 Devices 頁面。點擊 Add Device,輸入一個你以 iTunes 獲得的設備名稱和相應的設備 ID,然後點擊 Submit。

5.創建一個認證簽名請求(certificate signing request (CSR))文件

    下面你需要創建一個開發人員認證(development developer certificate)和一個用於特定開發人員認證、App ID和設備的開發配置文件(development provisioning profile)。 為了獲得一個開發人員認證,你需要在你的電腦中生成一個認證簽名請求(certificate signing request (CSR) )文件,將其上傳到 iOS Provisioning Portal,然後你自己或團隊領導需要批准這一請求。 僅管你可以創建一個能够同時用於 Mac 和 Windows系统電腦的 CSR,但 Mac 系统中的 CSR 更為簡單。 在 Mac OS 中生成一個 CSR ,你可以使用 Keychain Access program 生成一個CSR。
    • 打開位於 Applications > Utilities 中的 Keychain Access。
    • 以一個 Certificate Authority 中選 Keychain Access > Certificate Assistant > Request a Certificate。
    • 在 Certificate Assistant中,輸入你的名字和Email,將請求保存到硬碟中、在 Let me specify key pair information字段前打勾,然後點擊Continue。







    指定保存文件的位置和它的名稱,然後點擊 Save。 在 Key Pair Information 頁面上,選中具有2048 bit密鑰長度的 RSA 算法。 如果你没有將密鑰長度设置為 2048 bit,則 iOS Provisioning Portal 將拒絕相應的 CSR。尋找保存於你電腦中的認證請求文件(certificate request file)。

    6.在Mac OS中創建一個P12文件


    在 Mac系统中,你可以使用Keychain Access program 生成一個P12版本。

    *這兩個都要下載





    *你就會有這兩個檔案 就點下去就好了 (但是原文中講的很多 所以還是照著步驟走一下好勒




    • 打開Keychain Access 應用程式(在Applications/Utilities 文件夾中)。
    • 在 Finder 或 Keychain Acces 中,點擊 WWDR 認證文件 (AppleWWDRCA.cer),選取File > Import,然後導入 AppleWWDRCA.cer。
    • 在 Finder 或 Keychain Acces 中,點擊 develop_identity.cer 文件,選取 File > Import,然後導入 develop_identity.cer 文件。


    瀏覽到 Certificates,你應該看到列出的兩個憑證,展開相對又的開發人員憑證,你應該看到一個私有秘鑰,然後按右鍵就選擇匯出,選擇p12,及製作完成。

    7.使用 iOS Provisioning Portal 創建一個開發人員憑證(CER)文件。


    • 現在你可以上傳認證請求文件到 iOS Provisioning Portal 以便創建一个開發人員憑證(development developer certificate)。
    • 返回到 iOS Provisioning Portal,然後瀏覽到 Certificate > Development。 
    • 點擊 Request Certificate,然後點擊Browse按钮。
    • 選中你剛剛創建並且在你的PC中保存的 CSR 文件,然後點選Submit。 相對應的憑證將出現在Certificates頁面中,其狀態為等待發布(pending issuance)。



     8.创建一个 iOS 开发配置文件(development provisioning profile)

    在對你的應用程式進行打包之前,你完成使用 iOS Provisioning Portal 需要的最後一步是創建一個 iOS 開發配置文件(development provisioning profile)。 返回到 iOS Provisioning Portal,瀏覽到 Certificate > Provisioning,然後點擊New Profile。 輸入一個配置文件名稱,選中你的憑證,選中 App ID 和設備,然後點 Submit。
    等待直到配置文件的狀態從 Pending 改變為 Active(你必須刷新該頁面)。 通常這一個操作僅僅需要几秒钟。下载该配置文件就完工勒。

    2012年6月15日 星期五

    依賴注入之我說

    參考http://www.martinfowler.com/articles/injection.html

    當我看完了前面比較常提到的實踐IoC之中的一方法是依賴注入(Dependence Injection),我也比較清楚這一塊,這個pattern算是比較清楚易懂了,他有點像是簡單版的Strategy pattern,說上簡單,其實應該說比較不複雜,其實在程式碼裡面,我們都常常不經意都會用到這些觀念.

    我利用action script 3 去試試看Type - 2 的方式(這個方式比較正統點 因spring 很推薦使用)

    1.

    先設計你要用的interface
    我選定的OS來當例子

    package self.base 
    {
    
     public interface Ios
     {
      function operating():void;
     }
    }
    
    2. 實作Ios interface 的兩個類別 mac.as 和 window.as

    package self.abee
    {
     import self.base.Ios;
    
     public class mac implements Ios
     {
      public function mac()
      {
      }
    
      public function operating():void
      {
       trace("start mac");
      }
     }
    }
    
    
    package self.abee
    {
     import self.base.Ios;
    
     public class windows implements Ios
     {
      public function windows()
      {
      }
    
      public function operating():void
      {
       trace("start window");
      }
     }
    }
    
    
    3.設定一個給外部使用的介面去把依賴注入設定好
    package self
    {
     import self.base.Ios;
    
     public class OSObject
     {
      public var ios:Ios;
    
      public function set dependenceOS(ios:Ios):void
      {
       this.ios=ios;
      }
     }
    }
    
    
    4. test吧
    package
    {
     import flash.display.Sprite;
    
     import self.OSObject;
     import self.abee.mac;
     import self.abee.windows;
    
     public class testDI extends Sprite
     {
      public function testDI()
      {
       var obj:OSObject=new OSObject;
       obj.dependenceOS=new windows;
       obj.ios.operating();
    
      }
     }
    }
    
    有沒有很簡單 ~~
    這就是大家常常掛在嘴巴再說的 注入-依賴
    type - 1  , type -3  大同小異 (只是注入的點不一樣) 








    美化文章顯示的code

    每次換主題
    有可能會把我設定的syntaxhighlighter
    都給移除
    所以哩
    我把東西備分一下
    以備不時之需
    =========================================================================
    1.打開blog ->設計 ->html

    2.找尋</head>

    3.把下面這幾行貼到</head>之前 就可以顯示哩
    <link href='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/styles/shCore.css' rel='stylesheet' type='text/css'/>
    <link href='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/styles/shThemeRDark.css' rel='stylesheet' type='text/css'/>
    
    <!-- 設定需要載入的核心檔案 shCore.js -->
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shCore.js' type='text/javascript'/>
    
    <!-- 設定需要載入的程式語言檔案  -->
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushCSharp.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushJScript.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushVb.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushXml.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushAS3.js' type='text/javascript'/>
    <script src='https://sites.google.com/site/evonda/syntaxhighlighter_3-0-83/scripts/shBrushXml.js' type='text/javascript'/>
    
    <!-- 設定啟用 highlighter   -->
    <script type='text/javascript'>
    SyntaxHighlighter.all()
    </script>