LoginSignup
45

More than 5 years have passed since last update.

我が家のXcode8対応での修正点たち、Archieveまで

Last updated at Posted at 2016-09-08

修正概要

とにかく・・・・とにかくビルドがしたいんだ・・・対応しなきゃいけないアプリが幾つかあるんだ・・・

とにかくXcode8 Beta6 + iOS10実機で確認!
何も考えずビルドしてもエラーの嵐。

こらあかん・・・Swift3.0対応したいけど後方互換もないのでとりあえず

Swift2.3で動くことを目指す

いい機会だったのでWidget追加したり、Speech対応してみた話は別途書きます。

軽微な修正点たち

Optionalになったものども

Mailのcomponents

MFMailComposeResultSavedはEnumでrawValueではチェックしてたけど
MFMailComposeResult.Savedみたいにアクセスできるようになった。

Storyboard

言わずもがな、こんなのがついて今までのようにAnyAnyでチェックするのではなく、CRなどで見ることになった。視覚的で嬉しいが、最初に表示するサイズを選択したら幾つかレイアウトがずれたりしてた。

スクリーンショット 2016-09-07 15.58.13.png

これを選んだことが原因かな、でもdiffを見る限りUpdate Layoutすれば治る misplaced="YES" 系のものばかりなので別原因かもしれない・・・
スクリーンショット 2016-09-07 15.59.14.png

だいたい1pxくらい横幅が足りない現象などが起きてた・・・謎だけど修正した。

あとViewDidLoadでAutolayout指定しているsubsviewのboundsを利用して、Viewを作ったりしている部分があったけど、そこでViewサイズがおかしい部分があった。これはなんでか謎・・・

各種プライバシーデータへのアクセス

[iOS 10] 各種ユーザーデータへアクセスする目的を記述することが必須になるようです

これは対応しないとクラッシュするのでまずいです。
カメラやカレンダー、フォトライブラリやホームキットなどほとんど全部ちゃんと書かないとダメですね。

Cocoapods

以下の変更を入れた、podsで利用するSwiftのversionを変える。

post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
      config.build_settings['SWIFT_VERSION'] = "2.3"
      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
      end
    end
end

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESというのはXcode8でDeprecatedになった、EMBEDDED_CONTENT_CONTAINS_SWIFTの代わり
https://github.com/CocoaPods/CocoaPods/issues/4203#issuecomment-147550871

あとはそれぞれのライブラリの対応ブランチを入れるようにする、例えばAlamofireならこう、いつ対応になるかわからないので暫定。

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift2.3'
  • Alamofire
  • KeychainAccess

は対応ブランチを指定しました、SwiftDateに関しては対応パッケージがなく特定のメソッドのリネームが必要だったので、自分で修正したブランチを用意しました。

optimization

ObjCのリンクエラーが結構出ていて全く謎だったんですが、Optimization Levelを変更して無事Archieveできました。-whole-module-optimizationで設定しているとリンクエラーが出ていました。
スクリーンショット 2016-09-07 18.49.02.png

Noneにしたほうがいいという記事も結構見ますが、とりあえずこれで進めてみます

Xcode8 Beta6の使用感

  • San Fransiscoは馴染まない
  • Xcode8でPluginが使えないの辛い・・・コンソールが一色になってしまった
    • 一部使えるそうです・・・

  • やっぱまだクラッシュする、Schemeいじるとすぐクラッシュする
  • 参照エラーが出てはMacを再起動している
  • コメントアウトできない
    • これはこちらをぜひ

  • Swift3がツラミある
  • 新機能はCallKitやSiriがかなり期待と違って悲しい・・・
    • 早く電話とかsiriで色々できるようになってほしい
  • tvOS3はシングルサインオンが期待だが詳細が謎い
  • watchOS3は期待してない

Speechを試した感じ、結構いい反面使い方にテクニックがあるのでこのへんで書こうと思います

という感じで色々調べたりして、実機で動かしたりして幾つかのアプリの対応を3日くらいで一段落させた。
さて、次はGMでテストだ!!!!!

4sがシミュレーターリストにない・・・
代わりにセブンが!!

スクリーンショット 2016-09-08 10.45.05.png

Archieveで手こずる

Archiveしてはエラーで繰り返してここまできた。
スクリーンショット 2016-09-08 22.40.02.png

なるほどわからん。
スクリーンショット 2016-09-08 12.44.45.png

Application uploaderを使ってみたらちゃんとエラーが出た。

Invalid Swift Support - The files libswiftDarwin.dylib...

さらにいくつか試しているうちに以下のエラーにも遭遇した。

ITMS-90205, IMTS-206

これはもうわからん。。。。
とやってたけど結局

  1. App TargetはALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESYES (こちら @yimajo さんにご指摘いただきでソースないのプロパティをYESに修正しました)
  2. WidgetはNO
  3. podfileは以下

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['SWIFT_VERSION'] = "2.3"
      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES' 
    end
  end
end

*なぜかitunesconnectに上げた後に以下がで続けてた。写真にアクセスなんてしてないんだが・・・・
フォーラムを見ているとどうやらpodで入れているやつにその気配があれば入れねばいけない説がある・・・
https://forums.developer.apple.com/thread/62229

たしかに使わないけど入れたら通った。謎

Dear developer,

We have discovered one or more issues with your recent delivery for "アプリ名-". To process your delivery, the following issues must be corrected:

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data. 

Embeded pods Frameworksを消してみたり、Archieve内のFrameworksをいじったりしていたけど、いらんかった。
無事TestFlightでも確認できた!!ヨッシャー!!!

と思った矢先一回修正して上げなおしたら

*** has conflicting provisioning settings. *** is automatically signed, but code signing identity iPhone Distribution: **** has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the project editor.
Code signing is required for product type 'App Extension' in SDK 'iOS 10.0'

??????

いきなりどうしたこいつ・・・と思ったけど言われるがままにCode SigningのAny iOS SDKのとこをDeveloperにした。あとdeveloper portalみたらプロファイルがなぜかinvalidになってたので、再度generateして、もう一度試したらイケたぁ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45