2016-09-27 6 views
6

xcode 7からiOS 8〜10でコンパイルするとアプリは正常に動作しますが、xcode 8からコンパイルすると、iOS 8ではiOS 9と10で正常に動作します。EXC_BAD_ACCESS iOS 8を実行している場合のみ

enter image description here

しかし、より頻繁に、それはちょうどメインでクラッシュします:時にはそれは、次のようなランダムなUI要素で停止します

enter image description here

* thread #1: tid = 0x11d655, 0x35deaf56 libobjc.A.dylib`objc_msgSend + 22, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xf632d5c1) 
frame #0: 0x35deaf56 libobjc.A.dylib`objc_msgSend + 22 
frame #1: 0x2db167ea CoreUI`-[CUINamedImage initWithName:usingRenditionKey:fromTheme:] + 98 
frame #2: 0x2db21d48 CoreUI`-[CUICatalog imageWithName:scaleFactor:deviceIdiom:deviceSubtype:sizeClassHorizontal:sizeClassVertical:] + 128 
frame #3: 0x2b8aee98 UIKit`__98-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:]_block_invoke + 240 
frame #4: 0x2b8aecea UIKit`-[_UIAssetManager imageNamed:scale:idiom:subtype:cachingOptions:sizeClassPair:attachCatalogImage:] + 230 
frame #5: 0x2b95df86 UIKit`-[UIImageAsset imageWithTraitCollection:] + 474 
frame #6: 0x2b58d9d2 UIKit`-[UIImageView _resolveImageForTrait:] + 286 
frame #7: 0x2b58d690 UIKit`-[UIImageView _didMoveFromWindow:toWindow:] + 156 
frame #8: 0x2b28aef4 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 656 
frame #9: 0x2b300d50 UIKit`-[UIControl _didMoveFromWindow:toWindow:] + 44 
frame #10: 0x2b28aef4 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 656 
frame #11: 0x2b28aef4 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 656 
frame #12: 0x2b28aef4 UIKit`-[UIView(Internal) _didMoveFromWindow:toWindow:] + 656 
frame #13: 0x2b28a804 UIKit`__45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 112 
frame #14: 0x2b28a720 UIKit`-[UIView(Hierarchy) _postMovedFromSuperview:] + 428 
frame #15: 0x2b294bce UIKit`-[UIView(Internal) _addSubview:positioned:relativeTo:] + 1462 
frame #16: 0x2b29460e UIKit`-[UIView(Hierarchy) addSubview:] + 30 
frame #17: 0x2b459eae UIKit`__53-[_UINavigationParallaxTransition animateTransition:]_block_invoke + 1262 
frame #18: 0x2b29ada4 UIKit`+[UIView(Animation) performWithoutAnimation:] + 72 
frame #19: 0x2b45977c UIKit`-[_UINavigationParallaxTransition animateTransition:] + 812 
frame #20: 0x2b417cfc UIKit`-[UINavigationController _startCustomTransition:] + 2860 
frame #21: 0x2b337026 UIKit`-[UINavigationController _startDeferredTransitionIfNeeded:] + 422 
frame #22: 0x2b336e2c UIKit`-[UINavigationController __viewWillLayoutSubviews] + 44 
frame #23: 0x2b336dc0 UIKit`-[UILayoutContainerView layoutSubviews] + 184 
frame #24: 0x2b28b7fe UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 514 
frame #25: 0x2acb1834 QuartzCore`-[CALayer layoutSublayers] + 136 
frame #26: 0x2acad20c QuartzCore`CA::Layer::layout_if_needed(CA::Transaction*) + 360 
frame #27: 0x2acad094 QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 16 
frame #28: 0x2acaca70 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 224 
frame #29: 0x2acac874 QuartzCore`CA::Transaction::commit() + 324 
frame #30: 0x2aca674c QuartzCore`CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56 
frame #31: 0x27d37ffc CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20 
frame #32: 0x27d356ba CoreFoundation`__CFRunLoopDoObservers + 278 
frame #33: 0x27d35ac2 CoreFoundation`__CFRunLoopRun + 914 
frame #34: 0x27c833b0 CoreFoundation`CFRunLoopRunSpecific + 476 
frame #35: 0x27c831c2 CoreFoundation`CFRunLoopRunInMode + 106 
frame #36: 0x2f1f2200 GraphicsServices`GSEventRunModal + 136 
frame #37: 0x2b2ed43c UIKit`UIApplicationMain + 1440 
* frame #38: 0x0017bf62 Dev`main(argc=1, argv=0x01549a28) + 106 at main.m:14 
frame #39: 0x3636aaae libdyld.dylib`start + 2 

私はすでにNSZombiesが有効になっていると私新しい情報を得ていない。以下のためのXcode 7からか、Xcodeの8から構築されたときに再びアプリが正常に動作します

enter image description here

thread #1: tid = 0x11d992, 0x020fce9e libclang_rt.asan_ios_dynamic.dylib`__asan::AsanDie(), queue = 'com.apple.main-thread', stop reason = Attempt to free a non-allocated address 
{ 
"access_size" : 0, 
    "access_type" : 0, 
    "address" : 103442256, 
    "description" : "Attempt to free a non-allocated address", 
    "instrumentation_class" : "AddressSanitizer", 
    "pc" : 0, 
    "stop_type" : "fatal_error" 
} 

:私は、アドレス消毒をオンに試してみましたが、それはまた、mainメソッドでも散発的が、通常はクラッシュしますiOS 9または10です。これは、iOS 8のXcode 8からビルドされた場合にのみ発生します。

答えて

10

チームの他の男が答えを見つけました。偽物。 Xcodeの8 GMと

https://forums.developer.apple.com/thread/60919

以前のiOS 9.3その後、IOSリリースをターゲットアプリの提出に16ビットまたはP3 資産が含まれている場合、このエラーが発生します。アプリでワイドカラー機能が必要な場合は、デプロイメントターゲットをiOS 9.3以降に変更する必要があります。アプリに のワイドカラー機能が不要で、それを古いバージョンの iOSバージョンにデプロイする場合は、すべての16ビットまたはP3アセットを 8ビットsRGBアセットに置き換える必要があります。 iTunes Connectのエラーメッセージで指定されたアセットカタログに "assetutil"を実行すると、16ビットまたはP3アセットが見つかります。以下の手順でプロセスの概要を示します。

  1. Inspectable .ipaファイルを作成します。 Xcodeオーガナイザ(Xcode->ウィンドウ - >オーガナイザ)で、検査するアーカイブを選択し、 "エクスポート..."をクリックし、 "エンタープライズまたはアドホック展開のエクスポート"を選択します。 これにより、アプリの.ipaファイル。
  2. その.ipaファイルを探し、.zipにその拡張子を変更します。
  3. は、.zipファイルを展開します。これは、あなたの.appバンドルを含むペイロードフォルダが生成されます。
  4. ターミナルを開き、作業ディレクトリを.appバンドルの最上位に変更するcd path/to/Payload/your.app

  5. 検索ツールを使用してAssets.cを探します。 arファイルを以下のように.appバンドルに追加します:find。 -name 'Assets.car'

  6. アプリケーションが持つ以下のような各Assets.carの16ビットまたはP3アセットを見つけるには、assetutilツールを使用します。 :sudoのxcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car> /tmp/Assets.json

  7. 結果/tmp/Assets.jsonを調べ、「含むいずれかの内容を探してくださいDisplayGamut ":" P3 "とそれに関連する" Name "。これにより、 は、1つ以上の16ビットまたはP3 アセットを含むイメージセットの名前になります。

  8. これらのアセットを8ビット/ sRGBアセットに置き換え、アプリを再構築します。更新:展開ターゲットが8.3または8.4 に設定され、アセットカタログがある場合、実際に16ビットまたはP3アセットがない場合でも、この同じエラー メッセージが表示されます。 の場合、展開ターゲットを8.2、 に下げるか、9.xまで移動する必要があります。

更新:展開ターゲットが8.3または8.4のいずれかに設定されていて、資産カタログを持っているなら、あなたは、あなたが実際には16ビットまたはP3の資産を持っていない場合でも、この同じエラーメッセージが表示されます。この場合、展開ターゲットを8.2に下げるか、9.xまで移動する必要があります。

+0

この度はありがとうございます。目標を8.2に下げて私のケースで解決しました! –

+0

ありがとう、これは私を助けてくれました! 8.2も私のために働いた。 – floschliep

+0

あまりにも助けられました!答えをhttp://stackoverflow.com/a/39570973で借りるには、 'sips -m ...'コマンドを実行して資産を修正するだけです。 –

関連する問題