2015年9月29日火曜日

AppSotreからのXocdeアップデートが失敗する

追記:AppSotreからのXocde 8へのアップデートが失敗する

アップデートの度に容量不足が発生するが、8へのアップデートでは20Gほど空いていないとアップデートできない。

ディスク使用量をチェックしたら~/Library/Developer/Xcode/iOS DeviceSupportに古いバージョンのものが残っていおり、大量にスペースを消費していた。
これらはシンボルが入っているだけで、必要であればXcodeがデバイスからダウンロードするという書き込みがあったので、古いものを削除した。


AppSotreからのXocde 7へのアップデートが失敗する

アップデート失敗後に「”購入済みページ”からダウンロードし直してください。」とメッセージが表示される。
そのとおりにしてみても、ダウンロード完了直前に同じことが再発する。

結果的にディスクの残容量不足でした。9G程度必要なようです。
このエラーが発生したときに、どうも途中までダウンロードしたものが残っているようで、残容量を更に圧迫していたようです。

途中でAppStoreにDebugメニューを表示し、Reset Applicationを行っています。もしかしたら、これも効果があったのかもしれません。

Debugメニューを表示するにはタミーナルから次のコマンドを実行します。
defaults write com.apple.appstore ShowDebugMenu -bool true

追加:iMovieアップデートでも同様のことが発生。なんどかアップデートを試しても失敗。AppStoreのReset Application後に成功した。

参考:
[Sy] Xcodeアップデート時に「”購入済みページ”からダウンロードし直してください。」とエラーになる場合の対処方法
Xcode failed to download. Use the Purchases page to try again


おまけ:"アプリケーション"フォルダのサイズがえらく大きくなっていたので調べたところ、Chromeが古いバージョンが残っていた。古いバージョンを消しても今のところ問題なし。

- /Applications/Google Chromeを右クリック
- "パッケージの内容を表示"を選択
- Contents/versionsへ移動
- 古いバージョンを削除


ビルド時のsdkのディレクトリが見つからないエラー
  • Project選択
  • Build Settings
  • Framework Search Paths検索
  • 該当する設定を削除
私の場合はTest Projectにこのパスが含まれていました。

Directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/Developer/Library/Frameworks'

参考:
Getting Framework related warning in Xcode 7.0

Blockの引数エラー

エラーメッセージ
/Users/my/Desktop/Proj/WebTest/WebTest/NLWebView.m:103:35: Conflicting parameter types in implementation of 'webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:': 'void (^ _Nonnull __strong)(void)' vs 'void (^__strong _Nonnull)()'

後ろのほうの型宣言部分の
void (^__strong _Nonnull)()'
は、実際には
void (^)()'
となっています。

必要な修正は
void (^)(void)'
とすることですが、メッセージ通りに
void (^ _Nonnull __strong)(void)
としておいた方が無難かもしれません。

iOS Simulatorエラー

WKWebViewのテストプログラムをiOS Simulatorで何度か起動していたら、次のエラーが発生して、再起動できなくなった。

The operation couldn’t be completed. FBSOpenApplicationErrorDomain Code=3

iOSシミュレータの次のメニューからコンテンツをリセットする。
[iOS Simulator]-[Rest Contents and Settings...]-[Reset]

参考:
Unable to run app in Simulator エラーの対応方法


WKWebViewのhtmlロードでエラー発生

こんなエラーが発生。
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

Xcodeをアップデートしたらメッセージが変わった?
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

これまでのコーディングでレスポンスが戻らず無反応状態になっている場合は
- (void)webView:didFailProvisionalNavigation:withError:
を実装し、errorをチェックしてみる。

iOS9からApp Transport Security(ATS)が導入され、デフォルトではHTTPでの通信ができなくなっている。
App Transport Security policyはplistで変更することが可能で、従来の動作に戻すには次の設定を追加する。

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  

不特定なサイトにアクセスする必要がある場合は、この設定にするしかなさそう。
特定のサイトに限定できる場合はドメイン指定でアクセス可能にする。

参考:
これに関連したGoogleのページもありました。

The launch image set "LaunchImage" has 5 unassigned children.

どうやら、以前のProjectでlaunch image setを2つ作ってしまったようです。

Project選択
 => Target
 => App Icons and Launch Images
 => Launch Image Sources

のプルダウンリストを見ると"Launchimage"が選択状態になっているが、もうひとつLaunchimage−1がある。
こちらに変更すると以前の状態にもどった。

もともとのLaunchimageが適切に設定されておらず、別のLaunchimageを追加し、そちらを使っていた。Xcode7は元の名前の方を選択状態にしたため、ということのようです。


画面がフルスクリーンにならない

前項の続き。
Imageが適切に設定できていないと、Default@2x(640x960)のサイズが適用され、そのイメージサイズがWindowサイズに適用されているようだ。そのため、画面がフルスクリーンにならない。

iOS8以降のみのサポートであればLaunch ImageにStoryboadまたはxibを使うことができるが、iOS7以前のサポートが必要な場合は従来のstatic imageを使う必要がある。
新しいImage Setを追加すると、iPhone6(Plus)のイメージも割り当てらるようになる。

Project選択
 => Target
 => App Icons and Launch Images
 => Launch Image Sources
で設定を表示する。

画面上部がiPhone Portrait iOS8,9 / iPhone Landscape iOS 8,9になっていない場合は 右クリック => New Image Set で追加。
Launch Imagesを再設定する。古いImage Setは削除可能。
App Icons and Launch Images => Launch Image Sourcesのプルダウンで、追加したImage Setを選択する。

各々のイメージフォルダには適切なサイズのImageを割り当てないと有効にならない。
その場合、こんなWarningが出る。
launchimage/Default-568h@2x-1.png is 640x1136 but should be 750x1334.

また、Xcodeから起動するデバイスに適用可能なImageがひとつもないと、次のエラーが発生する。
The launch image set named "LaunchImage-1" did not have any applicable content.

そのデバイスに対応するImageが未設定あるいは不適切でも、適用可能なものがあればそれが割り当てられる。

たとえばiPhone 6用だけにiPhone5のImageをセットすると上のエラーになる。その状態でiPhone 5用のImageもセットするとエラーは消え、iPhone5のサイズが適用される。

参考:
Launch Image not showing up in iOS application (using Images.xcassets)

iOS 6もサポートする場合はこんなエラーもでる。

iPhone Retina (4-inch) launch image for iOS 6.x and prior is required when targeting releases prior to 7.0.

この場合は、こちらをご覧ください。

marble seijin の開発日記 まだまだある、xcode5での変更点


0 件のコメント: