バージョンアップしたアプリをApp Storeに申請する方法

既にApp Storeに登録されてるアプリを改良して、新しいバージョンとしてApp Storeに載せたい場合は、バージョンアップしたことを申請する必要があります。申請方法は新たにアプリを登録するよりもはるかに簡単ですが、知らないと戸惑うこともあるので、メモとして残しておきます。

 

iTunes Connectで新バージョンを申請

まず、iTunes Connectにサインインし、[Manage Your Apps]の画面に行き、その画面からバージョンアップしたいアプリを選択します。

アプリを選択すると画面下部に現在のバージョンのアプリの情報と、その右に"Add Version"と表記されたボタンが表示されているので、このAdd Versionボタンを押します。

where_is_add_version

そうすると、いろいろな質問が画面に表示されますので答えていきます。そして以下のようなバージョン番号バージョンアップ内容を記述する画面が出てくるので、それぞれの言語ごとにバージョンアップ内容を記述してください。

new_version_apply

最後まで行くと、バージョンアップ前(つまり現在バージョン)のアプリの情報が引き継がれた新しいバージョンのアプリ情報が作成されます。変更点があればアプリ情報を修正し、同画面の右上にある"Ready To Upload Binary”ボタンを押します。これでiTunes Connectでの作業は完了です。

 

XCodeで新バージョンのアプリをApp Storeに送信する

次はXCode上での作業です。プロジェクト内にある"[ターゲット名]-info.plist"を開きます。このファイルの2つの項目"Bundle version"と"Bundle versions string, short"にそれぞれ先ほどiTunes Connectで申請した新しいバージョン番号を以下のように入力します。

change_app_version

後はアプリ申請時同様、このバージョンのArchiveを作成し、Organizer経由でApp Storeに新しいバージョンのアプリを送信して完了です。このあたりの手順については以前の記事「App Storeへのアプリの登録手順」を参考にしてください。

 

環境

XCode 4.6.2

 

Rails3.0.7から3.2.9へのバージョンアップ方法

Rails 3.0.7のアプリをRails 3.2.9にバージョンアップした際の手順と、発生した問題とその解決方法をこのメモに残します。

1.  Gemfileファイルに記述されているrailsのバージョンを変更する
変更前)gem 'rails', '3.0.7'
変更後)gem 'rails', '3.2.9'

2. Gemfile.lockファイルを削除する
Gemfile.lockファイルには以前のバージョンのgemとその依存関係が記述されているので、このファイルを削除します。

3.  古いgemを消す
[Railsアプリのroot]/vendor/bundle配下にgemをインストールしていた場合は、このディレクトリ以下のファイルを全て消します。

4.新しいGemをインストール
お馴染みの以下のコマンドを実行してGemfileで指定したgemをインストールします。
bundle install --path vendor/bundle

5. bundlerの機能を使ってRails本体の更新
以下のコマンドを実行します。
bundle update rails

6. 設定ファイル等の更新
以下のコマンドを実行します。
bundle exec rake rails:update
そうすると、バージョンアップしたRailsに対応する設定ファイルの変更が各ファイルに反映されます。もしバージョンアップ前後で差異があるファイルがあったならば、上書きするかどうか聞いてきます。「d」キーを押してEnterを押すとバージョンアップ前後での差分が見れますので、それを見ながら判断していくといいでしょう。特にroutes.rbは何も考えずに上書きしてしまうと、自分が編集した内容が初期化されてしまうので要注意です。

 

通常、ここまでRailsのバージョンアップは完了です。
しかしながら、私の環境ではそれ以外も変更しないとうまく動作しなかったので、そのトラブルシューティングを以下に載せておきます。

Gemの追加
Rails 3.1以上からAsset Pipelineの追加やjQueryの標準化が行われたので以下のGemfileに以下の内容を追加しました。

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'execjs'
gem 'therubyracer'

 

Asset Pipelineへの対応
Rails 3.1以上からAsset Pipelineが登場したので、それに合わせた対応が加えて必要でした。具体的にはappディレクトリにassetsディレクトリを作成し、その配下にimages, stylesheets, javascriptsディレクトリを作成しました。そして、stylesheetsディレクトリ配下にapplication.cssを、javascriptsディレクトリ配下にapplication.jsを作成する必要があります。ここでだいぶハマったのですが、application.cssとapplication.jsは更新後のRailsのバージョンのものを使う必要があります。元々あるファイルをコピーするとJavaScriptのライブラリが読み込まれず、destoryアクションを処理できなくなってしまいます。どうやら、ファイルの先頭部分にあるコメント文が関係しているようです。そのため、私は新規にRails 3.2.9のプロジェクトを作成し、そこからapplication.cssとapplication.jsをコピーして使用しました。

Deviseでsign outができなくなったことへの対応
RailsをバージョンアップしたアプリではDeviseを使用しているのですが、バージョンアップ後になぜかsign out(ログアウト)ができなくなってしまいました。いろいろ調べた結果、以下の内容をroutes.rbに記述することで解決できました。

devise_for :users do get '/users/sign_out' => 'devise/sessions#destroy' end