アプリを送信しようとすると、次の警告が表示されます。
警告ITMS-9000:「このバンドルは無効です。info.plistファイルのキーCFBundleVersion [3.3.9.2014.08.20]の値は、最大で3つのピリオド区切りリストである必要があります非負の整数。」
これは、そのバージョン管理形式で多数の送信を行った後で初めて見られるものです。
CFBundleVersionに関して何か変更はありますか?
threeが常にそこにあったとは思わない?またはAppleちょうどそれについて私たちに警告を開始しましたか?
Apple docs から:
CFBundleVersion
CFBundleVersion(文字列-iOS、OS X)は、バンドルのビルドバージョン番号を指定します。これは、バンドルの反復(リリース済みまたは未リリース)を識別します。ビルドバージョン番号は、3つの負ではない、ピリオドで区切られた整数で構成される文字列で、最初の整数はゼロより大きい必要があります。文字列には、数字(0-9)とピリオド(。)のみを含める必要があります。先頭のゼロは各整数から切り捨てられ、無視されます(つまり、1.02.3は1.2.3と同等です)。このキーはローカライズできません。
編集:
ご覧のように、CFBundleVersionが変更されたようです here 。 Appleの "Document Revision History"には何も書かれていないのに、WayBackMachineでそのようなものを検索する必要があるのは残念だ。
ご覧のように、CFBundleVersionが変更されたようです here 。 Appleの "Document Revision History"には何も書かれていないのに、WayBackMachineでそのようなものを検索する必要があるのは残念だ。
これは、Cocoapodsから使用していたフレームワークで発生しました。修正方法は次のとおりです。
Info.plistファイルで非標準のCFBundleShortVersionStringを見つける必要があります。私はそれらすべてを検索し、これをリポジトリの1つで見つけました:
<key>CFBundleShortVersionString</key>
<string>HEAD based on 1.0</string>
これを次のように変更しました:
<key>CFBundleShortVersionString</key>
<string>1.0</string>
そしてそれはうまくいった
Cocoapods開発者によって作成されたこのメソッドも機能します。
https://github.com/Jonge/Cocoapods-frameworks-version-number-fix
Appleはこれをさらに一歩進めて、これをエラーにしました(これがいつ起こったかはわかりませんが、Xcode 6を使用しています)。CFBundleShortVersionString
が2小数点以上の場合、iTunes Connectへのアーカイブの送信が失敗します。
あなたは今mustCFBundleShortVersionString
like 1.0
、4.5.2
などを使用して、アプリケーションを正常に送信します。少し煩わしいかもしれませんが、理にかなっていると思います。
推奨されるベストプラクティスは、CFBundleShortVersionString
とCFBundleVersion
に別々の値を使用することです。
CFBundleShortVersionString
の最大3コンポーネント(例:4.2.3)CFBundleVersion
CFBundleShortVersionString
は、App Storeに表示されるバージョンです。 CFBundleVersion
は、アップロードするビルドごとに変更する必要があります。
例:iTunesConnectで確認するために新しいバージョン(4.2.3)をアップロードし、拒否された場合。同じバージョン番号(CFBundleShortVersionString
= 4.2.3)の新しいビルドを異なるCFBundleVersion
値で再送信する必要があります
CocoaPods
を使用している場合は、このスクリプトをPodfile
に追加して、非数値のバンドルバージョンを処理します。
# fix for non numeric CocoaPods versions
# https://github.com/CocoaPods/CocoaPods/issues/4421#issuecomment-151804311
post_install do |installer|
plist_buddy = "/usr/libexec/PlistBuddy"
installer.pods_project.targets.each do |target|
plist = "Pods/Target Support Files/#{target}/Info.plist"
original_version = `#{plist_buddy} -c "Print CFBundleShortVersionString" "#{plist}"`.strip
changed_version = original_version[/(\d+\.){1,2}(\d+)?/]
unless original_version == changed_version
puts "Fix version of Pod #{target}: #{original_version} => #{changed_version}"
`#{plist_buddy} -c "Set CFBundleShortVersionString #{changed_version}" "Pods/Target Support Files/#{target}/Info.plist"`
end
end
end
ReactiveCocoa 4の出力例:
Installing ReactiveCocoa (4.0.4-alpha-1)
(...)
Fix version of Pod ReactiveCocoa: 4.0.4-alpha-1 => 4.0.4
エラーに従い、CFBundleVersionに従って検索します。ケース検索では3.3.9.2014.08.20に変更し、3.3.9や3.4.0などの正しいバージョンに変更します(古いバージョンよりも大きい必要があります)。
同じ問題が発生していました-
ブロッククォート
エラーITMS-90058:「このバンドルは無効です。Info.plistファイルのキーCFBundleVersion [ms-08-23]の値は、最大3つの負でない整数のピリオド区切りリストである必要があります。」
ブロッククォート
そこで行って、サードパーティのフレームワークPlistごとに検索したところ、SAPライブラリでバンドルバージョンとして[ms-08-23]が見つかりました。 3つの非負の整数の形式に変更しましたie.0.、SAPのすべてのフレームワークで変更しました-IT作業。