XCode 10.3で確認。
ビルド設定でPreprocess Info.plist File
をYES
に設定している場合、ビルド時に以下のエラーが発生する。
"error: unable to read property list from file:<Preprocessed-Info.plistのファイルパス>"エラー: The operation couldn't be completed. (XCBUtil.PropertyListConversionError error 1.)
エラーの原因を調査
ファイルパスで表示されているPreprocessed-Info.plistファイルをplutilでチェックすることで原因が分かる。
$ plutil -lint Preprocessed-Info.plist Preprocessed-Info.plist: Encountered unexpected character k on line 33 while looking for close tag
これはファイルの33行目にXMLのクローズタグが存在しないために発生していることを意味している。実際に確認すると、以下のようにクローズタグが無く途中で終わっている。
<string>http:
エラーの原因
このエラーは以下に記載の通り、Info.plistファイル内にURLが含まれている場合にInfo.plistのPreprocessを有効にすると発生する。解決方法も記載されている。 developer.apple.com
原因は//
がコメントとして認識されるため。URLがあると "http://..." の //
以降がコメントとして扱われて無視されてしまう。
解決方法
上記に記載の通り、XCodeのビルド設定Info.plist Other Preprocessor Flags
に対して-traditional
を設定する。これで//
がコメントとして扱われることがなくなる。
注意
Info.plist Preprocessor Prefix File
にファイルを指定している場合、上記のフラグを指定するとこのファイル内でコメントとして //
を使用できなくなる。
//
を使用した場合、その行はコメントとして認識されず、そのままInfo.plistファイルの先頭部分に追加されてしまい、ビルド時にエラーになる。
コメントを使用する場合は /* */
を使用する。