1

私はこれに完全に困惑しており、Xcode の経験が豊富な SO ユーザーが、アプリケーションのビルドで何が起こっているのか、または問題をデバッグする方法について教えてくれることを願っています。

USB ビデオ ソースとのインターフェイスに (現在は廃止された) QTKit ライブラリを使用する古いアプリケーションがあります。macOS 10.12 ベータ版で正常にビルドされるかどうかを確認したかったのです。

ベータ版をダウンロードしてインストールし、VMWare 仮想マシン内に Xcode 7.3.1 をインストールしました。バグが解決された後 (詳細は後述)、アプリケーションは正常にビルドおよび実行されました。

次に、macOS 10.12 を独自のパーティションにインストールし、同じバージョンの Xcode をインストールしました。VM から Xcode プロジェクト ファイルをコピーしました。今回、アプリケーションをビルドすると、Web カメラの画像があるはずの場所に空白の画面が表示されます。

いくつかの追加の事実:

  • VM 内に構築されたアプリをパーティション OS インストールに移動すると、正常に機能し続けます。
  • アプリケーションが VM 内でビルドされると、コンソール ログに次のように記録されます。Core Image は現在、ソフトウェア OpenGL レンダラーを使用しています。これは遅くなる」
  • いくつかの場所で CIImage を保持およびリリースします。VM で最初にアプリをビルドしたとき、リリース後にイメージが参照されたため、EXC_BAD_ACCESS エラーが発生しました。また、VM ビルドでは、イメージ インスタンスが解放されないと、大量のメモリ リークが発生します。パーティションのビルドでは、イメージを保持および解放するコードを削除できます。リークは発生せず、アクセスエラーも発生しません。

アプリケーションが VM 内に構築されているか、ネイティブ OS インストールで構築されているかによって結果が異なるのはなぜですか?

4

1 に答える 1

0

VM 内に構築されたアプリをパーティション OS インストールに移動すると、正常に機能し続けます。... アプリケーションが VM 内に構築されているか、ネイティブ OS インストールで構築されているかによって結果が異なるのはなぜですか?

あなたの具体的なケースはわかりませんが、アプリケーションがネイティブ環境または仮想環境で構築された場合、同じ結果が得られると言えます。

これまでのところ、10.12 で高速化された OpenGL 仮想化に問題があることを確認しています。私はマシンを持っていませんが、動作がハードウェアと一致していないことをテストできます。

ハードウェア アクセラレーション OpenGL レンダラーが利用可能かどうかを検出する方法については、https://stackoverflow.com/a/23000381/608945を参照してください。これを 10.11 (ハードウェア) で試したところ、 が返さtrueれ、10.12 (Parallels、仮想) では が返されfalseました。

ハードウェア アクセラレーションが利用できない仮想環境でアプリケーションを使用するユース ケースがある場合は、適切に処理する必要があると思います。

于 2016-09-12T10:17:30.423 に答える