2016-12-15 9 views
0

私はビデオを録画するアプリケーションを持っており、extern libsをFMMPEGとx264として使用している。すべてのexternライブラリは、iOS 9.2 SDKとすべての有効なアーキテクチャ用にコンパイルされています。iOS 9ではアプリケーションがクラッシュするが、iOS 10では発生しない

Base SDKとしてiOS 10 SDKを使用し、iOS 10の廃止予定のメソッドをiOSを使用する新しいメソッド(置き換え後のXcodeから8.Xバージョン)に置き換えるまでは、うまくいきました。 minimunバージョンをサポートするので、(私は避けるの警告のためにそれを決めた私が言ったようにアプリがEXTERN LIBSを使用し、

Build Settings

、このLIBSは、iOSの9.2 SDKのバージョンでコンパイルされています。この時点で、私は、このビルド設定を持っています私のアプリは9.2です)。まあ、アプリがiOS 10で実行されるとエラーなしで実行されますが、iOS 9でアプリが実行されて動画の録画が開始されると、アプリは常にFFMPEGのfloat操作でクラッシュします(FFMPEGソースコードを編集して、値を整数に変換してから、次のfloat操作でアプリケーションがクラッシュするため、解決策ではありません)。

問題がある:

Only crash when I use iOS 10.X SDK version for compile app in Xcode, when I configure for use iOS 9.X SDK version in Xcode for compile and install app in iOS 9, it don't crash.

ソリューションは、次のようになります。Xcodeでコンパイルのため使用のiOS SDK 9.Xが、私が作成したアプリのためのiOS 9.X SDKのバージョンを使用することはできません、私はUserNotificationsとしてiOS 10でしかないフレームワークを使用します。

もちろん、私はいつもとランタイムでのiOSのバージョンを確認:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {...} 

要約:iOSの10.X SDK + iOSの9 =クラッシュしてコンパイル

のApp

のApp iOS 9.X SDK + iOS 9でコンパイル=クラッシュなし(ただし解決策にはなりません)


クラッシュコードは:

code=EXC_ARM_BREAKPOINT,subcode=0xe7ffdefe

+0

この質問をチェックしましたか? http://stackoverflow.com/questions/29434253/xcode-exc-breakpoint-exc-arm-breakpoint-exc-arm-breakpoint-subcode-0xe7ffdefeこの特定のケースでは、それは64ビット環境で使用されていた整数でしたが、コードは32ビットでした。 'UInt32'にキャストするだけで問題は解決しました。おそらく 'Float32'を使用していますか? –

+0

問題は32ビットと64ビットではなく、問題は次のとおりです.iOS 10を実行しているiPhone SEと問題なく1つのアプリケーションを実行できます。浮動小数点演算でiOS 9のクラッシュを起こしている他のiPhone SEでは、iPhone SEは64ビットのprocを使用しているため、エラーにはなりません。また、サードパーティ製のlibでアプリクラッシュ、すべてのタイプを変更するのは狂っている。 – Anthony

+0

ソリューションで編集しました。すべての人に感謝;) – Anthony

答えて

0

(OPに代わって投稿します)。

問題は解決しました。私は、ログをチェックしていたとき、私は次のエラーを見た:

dyld: Symbol not found: ___gesf2 

問題はアプリは32ビット(& armv7sのARMv7)で実行したときにアプリがアドレス帳Frameworkでシンボルを探していたということでした。解決策は、プロジェクトからこのフレームワークを削除し、それを再コンパイルすることでした。

関連する問題