參考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple審覈詳細流程(新版本更新提交審覈))html http://www.ttlsa.com/dev/how-to-publish-iosapp-to-appstore/ (如何發佈IOS應用程序到蘋果APP STORE)android
開發環境:xcode5.1.1ios iphonesdk:7.1xcode 開發機器:iMac安全 真機部署測試:apple我的開發者IDapp
嚮導:iphone 必備IDP證書和distribution證書(第一個證書是真機部署測試時用到的,後者證書是發佈時須要用到的,缺一不可)。xss http://www.cnblogs.com/JuneWang/p/3798201.html (該連接所指文章實現了消息推送的功能、詳細講解了各個證書的申請,以及使用)ide http://www.ttlsa.com/dev/ios-kaifazhe-shenqing-zhengshu/ (iOS開發這申請發佈證書)學習
我就說說接下來應該作的流程。在你保證擁有以上兩個證書的前提下,距離app提交審覈,已經剩下兩大步了:1,itunes-connect建立app,填寫項目詳細信息。2,xcode打包驗證經過,提交項目。好的,我就開始說重點了,童鞋們跟着個人流程走,保證不會迷糊和出錯。
1.預先準備 在你開始將程序提交到App Store以前,你須要有一個App ID,一個有效的發佈證書,以及一個有效的Provisioning profile。下面來看看它們各自的做用。
Step 1: App ID(應用ID) App ID是識別不一樣應用程序的惟一標示符。每一個app都須要一個App ID或者app標識。目前有兩種類型的App標識:一個是精確的App ID(explicit App ID),一個是通配符App ID(wildcard App ID)。使用通配符的App ID能夠用來構建和安裝多個程序。儘管通配符App ID很是方便,可是一個精確的App ID也是須要的,尤爲是當App使用iCloud 或者使用其餘iOS功能的時候,好比Game Center、Push Notifications或者IAP。
若是你不肯定什麼樣的App ID適合你的項目,我推薦你讀下蘋果關於這一主題的文檔:Technical Note QA1713。
Step 2: Distribution Certificate(發佈證書)
若是對此不熟悉,我建議你讀下蘋果關於signing certificates和provisioning profiles的詳細指導。
Step 3: Provisioning Profile(配置文件)
Step 4: Build Settings(生成設置)
Step 5: Deployment Target(部署目標)
很是有必要說下deployment target,Xcode中每一個target都有一個deployment target,它能夠指出app能夠運行的最小版本。不過,一旦應用在App Store中生效,再去修改deployment target,你要考慮到必定後果。若是你在更新app的時候提升了deployment target,可是已經購買應用的用戶並無遇到新的deployment target,那麼應用就不能在用戶的移動設備上運行。若是用戶經過iTunes (不是設備)下載了一個更新過的app,而後替代了設備上原先的版本,最後卻發現新版本不能在設備上運行,這確實是個問題。
(1) 當你決定提升現有app的deployment target時,要在新版本的版本註釋中進行說明。若是你提早告知用戶,那麼至少有一點,你已經盡力阻止問題的發生了。
(2) 對於一款新app,我常常會把deployment target設置爲最近發佈的系統版本。由於新iOS版本發佈後,滲透率的增加速度是使人難以置信的。不少人認爲提升deployment target會失去大部分市場,這個說法並不許確,好比iOS 6,iOS 6發佈後一個月,超過60%的設備已經進行了更新。但對android而言,就是另一回事了,Android用戶並不會像iOS用戶那樣熱衷於更新操做系統版本。 【以上簡而言之,最好從項目設計時,就決定是否考慮兼容低版本用戶,支持的話,寫代碼時使用ios新特性時最好作一下判斷,if是老版本if是新版本】
在最新的WWDC2014上,公佈的數字顯示,iOS7的市場佔有率已經爲87%
2. Assets(資源包) Step 1: Icons(圖標)
Step 2: 屏幕截圖
屏幕截圖和icon是應用給用戶的第一感受,直接關係到用戶會不會購買。不過,你所上傳的屏幕截圖也不必定非得是實際的截圖,看看Where’s My Water? 截圖能夠經過使用此策略,更具吸引力和說服力。
當咱們連上調試機之後。能夠利用Xcode中Organizer中的New Screenshot輕鬆的截出標準大小的圖片。
Step 3: 元數據
若是你的應用須要註冊【打開APP須要登陸,好比飛信】,你還得向蘋果提供一個測試帳戶或者demo帳戶,這樣審覈人員就能很快進入app,而不用再註冊帳號。
3. 提交準備 Xcode 4之後,開發者提交應用的過程就簡單多了,能夠直接使用Xcode進行提交。首先在iTunes Connect中建立app,訪問iTunes Connect,使用你的iOS開發者帳號登錄,點擊右邊的「Manage Your Apps」,點擊左上角的「Add New App」,選擇「iOS App」,而後完成表格。 (注意,建立時填的APP就是你開發的項目,名稱和ID必定要相同)。https://itunesconnect.apple.com
點擊進入 左上角,添加一個APP,若是你的開發帳號以前已經提交過app,下面就會列出來。 第一個頁面,選擇語言,應用名稱,skunumber,bundleID(會讓你選擇本身建立項目的APPID)。(答疑:在咱們進行版本更新的時候名字,描述,新版本描述,關鍵詞,支持URL,截圖、聯繫方式,Review Ntoes)都可以更改
SKU Number是一個用來識別app的特殊字符串。我常用app的bundle identifier。最下邊是app的Bundle ID,你能夠從下來菜單中選擇通配符App ID或者準確的App ID。 這個頁面是選擇app上線的日期(由於apple還須要審覈,通常都是推遲幾天),售價,以及是否支援教育機構之類的。 以上頁面是寫版本號,公司名稱,軟件首類別,次類別(注意兩個類別不得重複,不然不會經過),以及評級劃分。 以上是軟件的內容描述,關鍵字,技術支持url,以及下面的技術負責人的名字,姓,email,手機號碼,這些都很簡單,大家都懂的。 ---------------------------------------------------------------------------------------------------------------------------------------- 接下來是選擇APPicon 一張1024X1024的軟件圖標,讓ui作吧,我也不曉得軟件的圖標爲啥要作這麼大; 繼續上傳5張軟件的截圖,要挑選最重要的圖片展現,大小是640x960,xcode上集成了截圖功能,則是打開window-organizer視圖窗口,點擊本身的手機標籤頁下的screenshot,就能夠截圖了,尺寸正好,很方便的噢親。 完過後檢查無誤,點擊提交。
選擇是否使用各類加密技術,是否使用第三方的內容,是否有廣告等。 ---------------------------------------------------------------------------------------------------------------------------------------- 好了,走到這一步,基本上算是完成了一個app的建立,這裏列舉了你的skunumber,bundleID,appleID,隨處可見的edit點擊進入能夠修改剛纔提交的信息,看到紅色圈住的狀態了:prepare for upload 千萬不要認爲此時工做完成了,還差一步,若是此時你關閉了頁面,準備最後一步,你會發現到時會出錯的。我就由於這個繞了半天。
點擊坐下的view Details進入後的頁面回會是此軟件的一個詳細列表展現了軟件的名稱,描述,軟件截圖,技術聯繫人信息,等。看完無誤後,必定要點擊右下角(或右上角)的按鈕(Ready to Upload Binary),只有點了這個按鈕,纔會改變當前status的狀態爲:waiting for upload。 【注意:若是是Ready for upload 狀態,在xcode下打包提交應用,會有:No suitable application records were found.
此時,若是你的首頁status變成了:waiting for upload 那麼恭喜你,此步順利經過,剩下最後了。(注意如上截圖,點擊continue,完成了網頁的全部工做)。
4.xcode上操做:設置證書,build打包,提交項目。
打開xcode,首先確保你配置好了distribution證書,看我以下截圖。
確保debug和release都是選中咱們申請好的distribution證書。到了次步驟,有的教程說建立一個新的codesigning identity 我也嘗試建立了,不過這裏不推薦新手建立,由於使用release照樣能夠打包,創新新的identity認爲會讓新手更暈菜。(如上截圖)
5. 上傳二進制文件
a.打開Xcode,選擇Product->Archive (必須採用真機) b.而後選擇distribute… c.選擇第二個 d.選擇發佈證書 點擊next以後便會生成.ipa文件 3.上傳.ipa文件,,須要用mac自帶的Application Loader a.在finder中選擇應用程序(Applications)->右鍵選擇Xcode->顯示包內容->contents->Applications->Application Loader b.打開Application Loader會出現登陸界面,一樣用登陸開發者中心的帳號登陸,第一次登陸會出現一個接受協議頁面,打√後繼續就好了 c.進入後選擇Deliver Your App,會出現你在developer中心填寫的項目,是等待上傳狀態,選擇上傳ipa就能夠了。 4.上傳成功後再回到開發者中心,刷新頁面就會發現項目是等待審覈狀態了,正常審覈週期是5個工做日
注意: 在使用Application Loader上傳.ipa文件的過程當中,遇到了如下問題,
經過修改Valid Architectures 刪掉arm64/arm7s,只保留armv7的方式解決該問題:
提醒: 若是你使用了CocoaPods來進行第三方類庫管理,你須要把你CocoaPods管理的工程的(Valid Architectures 刪掉arm64/arm7s,只保留armv7)
哈哈。第一次發佈。碰到了不少問題,獲得了很多好友幫助,很是感謝。 也但願本文能對即將發佈系統的你起到一些知道、幫助。那我也將會很是開心。
由於還沒體驗過應用更新,因此一下內容均摘抄自 http://blog.csdn.net/mad1989/article/details/8167529
PS。當咱們的ipa文件經過application loader上傳後,突然發覺不對。想從新替換上傳的話。能夠經過如下步驟: 1.https://itunesconnect.apple.com 進入到咱們的應用 2.點擊view detail 3.進入view detail後,在右上角有
選擇Binary Details 4.進入頁面之後,點擊Reject This Binary就好了 5.從新經過Archive打包,從新經過Application Loader上傳
好了,接下來講一下,如何在有IDP證書,開發者帳號的狀況下,經過正規途徑,導出ipa,安裝在任意iphone手機中(親測越獄手機) 當咱們在上幾步,打包build的時候,觀看你項目的Products文件夾下,已經生成了真實的app,不過這個還不是咱們真正想要的.ipa文件。(如上截圖)選中Product下的app,右鍵show in Finder,此時打開咱們的itunes,拖動軟件到itunes下。 此時,咱們的軟件就拖到了itunes中了,但是發現沒有軟件圖標啊,不用怕,這是很正常的。右鍵軟件,選擇在Finder中顯示(如上截圖) 此時,眼前這個軟件,就是咱們想要的ipa啦。我親測安裝到越獄後的手機,一點問題都沒有(不用擔憂證書的問題)【注意:越獄手機的版本必定要高於軟件的版本要求】 目前尚未測試未越獄的手機,不過我想應該沒法安裝,由於apple的審查機制是很嚴格的,必須安裝在有描述文件Provision的手機中內(這一點在真機部署測試時就已經體現出來了)
2014年5月30日插播 若是您都看到了這裏,我真的佩服您能忍受我如此繁瑣的措辭,由於時間緣由,寫一篇博客並非很容易,因此有些語言或是排版組織的不是很好,1年過來了,如今我終於理解整個調試以及發佈以及多人開發的流程,若是您如今也是朦朧狀態,感受apple的機制好麻煩,或是在多人開發時遇到了:Valid signing identity not found 不妨建議您看我另外一篇文章,文章最後介紹了Certificate、App ID、Devices、Provisioning Profiles之間區別和聯繫,相信您看完後必定會恍然大悟! Valid signing identity not found解決辦法(原有IDP私鑰丟失)及Certificate、App ID、Devices、Provisioning Profiles之間區別http://blog.csdn.net/mad1989/article/details/8699147
好了,謝謝各位看到這裏,說的有些囉嗦,可是若是你按照此步驟,走完流程,就會悟出其原理。至少不是看到一教程,又看到另外一教程,都不同,乾着急。 有什麼問題能夠給我留言,我看到後會儘可能幫助你們解決,一塊兒學習,成長。 贈送傳送門一個:http://www.cocoachina.com/special/market.html
20121109 mryang
2013年1月14日最新更新 :新版本提交審覈
當咱們通過重重關卡,新項目終於在AppStore 上線以後,就會接踵而來遇到維護的問題,那麼新版本提交,就沒有這麼複雜了,若是以上的教程你都理解了,新版本也就那麼幾個須要注意的地方,聽我慢慢道來。
1,首先須要修改代碼,就是說,你要有更新的內容,好比功能,好比bug(貌似是廢話) 2,當肯定一切都ok以後,須要設置項目的version和build號,新版本 Version是顯示對外的版本號,(itunesconect和Appstore用戶能夠看到),而build別人看不到,只有開發者本身才能看到,至關於內部版本號。【更新版本的時候,也要高於以前的build號】
3,登陸ituneconnect網站,在項目右側,點擊add new version ,彈出提示輸入版本名稱和更新內容,完過後點save。 4,在網站上詳細審查一下新的版本名稱和更新內容,還有是否有須要替換的截圖,肯定無誤後點右上角的ready to binary ,到此網站的設置完畢。接下來就是xcode提交新項目了。【此設置有一個須要注意的提示,以下截圖】 讓你選擇是審覈經過後自動更新到應用商店,或是本身手動控制更新,很人性化。
5,Xcode設置 codesign identity 爲發佈的證書,Divice選則iosDevice ,而後build 而後archive,跟上邊第一次發佈時同樣。 6,打開organizer界面的archive標籤頁,檢查無誤後,先驗證Validate後Distribute。 等待完畢後,若是沒有什麼問題,刷新itunescnnet網站吧,你新提交的項目狀態變成了:Waiting For Review
20120114
**********************************打包上傳時錯誤彙總《持續更新》**********************************
上傳時出錯:Application failed codesign verification.
它是說,你的簽名不對,打包發佈APP時,必定要使用Release模式,並把證書選擇爲本身的Distribution發佈證書。
關於Validate Built Product設置YES或NO 有時打包遇到錯誤,網上都說,在Target設置----->build------>Validate Built Product選項去掉或設置爲NO就能夠了。從網上搜了一下Validate Built Product的含義,大概意思是說開啓內置驗證,好比apple規定的一些icon大小是57X57,而你的icon尺寸不是這個,就會致使發佈失敗。
上傳時出錯:code signing is required for product type Application in SDK iOS 6.1.
這個是說,debug的證書選擇錯誤了,解決辦法: TARGETS --> Build Settings --> Code Signing --> Code Signing Identity設置爲 iPhone Developer 這樣就ok啦。
上傳時警告:cApplication failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011).
這個警告,網上遇到的人不少,可是衆說紛紜,貌似沒有一個權威的解決辦法, 首先要養成一個查閱官方文檔的習慣:https://developer.apple.com/ios/manage/distribution/index.action 要明白真機調試和發佈應用的幾個步驟,不能連APP還沒建立,就直接想用Xcode打包發佈啊!還有要明白debug和release的做用和區別。
這個警告,個人理解是: 前提確認Xcode是近期的版本,工程的SDK也至少要是經常使用的。APPID正確,真機調試證書和Distribution證書都對應於當前Xcode設置。 首先檢查你的Project的info是否正確了,還有就是Target設置是否正確..
20130510
上傳時出錯:failed to get the task for process 624 This error happens when you have set Distribution Provisioning profile in code signing. Change it to Developer Provisioning Profile, then it will work. Worked for me for Xcode SDK 4.5.
上傳時出錯:CFbundleVersion 這個錯誤是說,咱們項目info.plist文件中的bundleVersion弄錯了,這個屬性須要int類型的數值,改爲以下圖所示就能夠了。
20140111 |