iOS 5 SDKをアップグレードした後、アップグレード前に作成したxcodeprojを開いてビルドすると、
旧バージョンのプロジェクト設定がちょっとおかしくなるだけじゃなく、
XCodeでデバッグしたアプリと、App Store経由でダウンロードするアプリの
動作に違いが出ます。ってかバグが発生します!!
強行突破しようと、以下の設定をこんな風にしてしまいました。
!!!以下間違った設定ですので、マネしないように!!!
「project」→「Build Settings」を開き、
・Base SDK:「iphoneos3.0」
・Valid Architectures:「armv6」
そしてビルド後、Validateすると、何となく通ってしまうし、
Appleの審査は通るしで、普通にアップロードが完了してしまいました。
もちろん、事前にテスト済みだったのですが、
iOS5のみ、スクロールがおかしくなってしまい、
最下部まで降りることができなくなりました;;
開発環境ではスクロールバグが発生しないし、
XCodeから実機にインストールで確認できなかったので
イチかバチかで以下のプロジェクト設定に直して再度審査へ。
「project」→「Build Settings」を開き、
・Base SDK:「Latest iOS(iOS 5.0)」
・Valid Architectures:「armv6, armv7」
これだとiOS5.0以降しかサポートされないんじゃないの?って不安があったので、
次の項目も変えておきました。
「project」→「Summary」を開き、
・Deployment Target:「3.0」
これで再審査を出して、
App Store経由でダウンロードしたアプリも無事に動きました!
プロジェクト設定は気をつけましょう!!
バグ入りバージョンにアップデートしてしまったユーザー様にご迷惑をおかけするし、
でも開発環境で発生しないから、再審査通してもうまくいくかわからないし、
審査には時間かかるしで…
iPhone開発はいろんな意味で難易度が高いですね。。。
iPhoneアプリバージョンアップ時のDBのアップグレード(マイグレーション)がちょっとてこずりました。
メモしておきます。
1.「XXX.xcdatamodeld」を選択
2.「Editor」→「Add Model Version...」を選択
3.「XXX 2」の場合はインクリメントされた数値「XXX 3」が表示されているので、これを選択。
4.「Finish」ボタンを押すと、新しいバージョンのデータベースが追加される。
5.再び「XXX.xcdatamodeld」を選択し、一番右端のビューで、ファイルアイコンみたいなのを選択
(デフォルトは~が二個書いてあるアイコンだったので気づかなかった)
↓画像
http://developer.apple.com/library/mac/#recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html
6.「Versioned Core Data Model」にCurrentコンボボックスがあるので、
ここで追加したバージョンのデータモデルを選択
これでやっと新しいバージョンのファイルにチェックが入ります。
あとは、新しいファイルにデータテーブルやらカラムを追加して、
「File」→「New」→「New File」→「Mapping Model」を追加し、
マイグレーション完成です。
あと、managedObjectModelの記述も変更しました。↓
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
// ここの2行を追加していないと、マイグレーションに失敗するので、忘れずに。
NSString *path = [[NSBundle mainBundle] pathForResource:@"XXX" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
メモしておきます。
1.「XXX.xcdatamodeld」を選択
2.「Editor」→「Add Model Version...」を選択
3.「XXX 2」の場合はインクリメントされた数値「XXX 3」が表示されているので、これを選択。
4.「Finish」ボタンを押すと、新しいバージョンのデータベースが追加される。
5.再び「XXX.xcdatamodeld」を選択し、一番右端のビューで、ファイルアイコンみたいなのを選択
(デフォルトは~が二個書いてあるアイコンだったので気づかなかった)
↓画像
http://developer.apple.com/library/mac/#recipes/xcode_help-core_data_modeling_tool/Articles/setting_current_version.html
6.「Versioned Core Data Model」にCurrentコンボボックスがあるので、
ここで追加したバージョンのデータモデルを選択
これでやっと新しいバージョンのファイルにチェックが入ります。
あとは、新しいファイルにデータテーブルやらカラムを追加して、
「File」→「New」→「New File」→「Mapping Model」を追加し、
マイグレーション完成です。
あと、managedObjectModelの記述も変更しました。↓
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
// ここの2行を追加していないと、マイグレーションに失敗するので、忘れずに。
NSString *path = [[NSBundle mainBundle] pathForResource:@"XXX" ofType:@"momd"];
NSURL *momURL = [NSURL fileURLWithPath:path];
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
return managedObjectModel;
}
Androidでアプリ更新するときに、APKファイルをアップしたら
「The server could not process your apk. Try again」
と出てきて涙目になりました。
解決方法として、今のところ2つ見つけました。
1.ブラウザの再起動
2.プロキシ設定の見直し
再起動について:
ブラウザ起動時にオフラインで、その後オンラインにしてからアップするとダメだったのかと思います。
オンライン状態でブラウザを立ち上げ直してみるとよいのかもです。
プロキシ設定の見直し:
ブラウザにプロキシが設定されているとアップできません。
(うちの会社だけかな?)
プロキシ設定も見直してみることが大事です!
私はプロキシを解除してからアップしてみました。
「The server could not process your apk. Try again」
と出てきて涙目になりました。
解決方法として、今のところ2つ見つけました。
1.ブラウザの再起動
2.プロキシ設定の見直し
再起動について:
ブラウザ起動時にオフラインで、その後オンラインにしてからアップするとダメだったのかと思います。
オンライン状態でブラウザを立ち上げ直してみるとよいのかもです。
プロキシ設定の見直し:
ブラウザにプロキシが設定されているとアップできません。
(うちの会社だけかな?)
プロキシ設定も見直してみることが大事です!
私はプロキシを解除してからアップしてみました。