web-dev-qa-db-ja.com

iOS-watchOSアプリ公開の問題CFBundleIdentifierの衝突

アプリのアップロード後、次のメールが届きます

アプリXXXの最近の配信に1つ以上の問題が見つかりました。次の問題を修正してから、もう一度アップロードしてください。

ITMS-90806:CFBundleIdentifierの衝突-各バンドルには一意のバンドル識別子が必要です。バンドル識別子「org.cocoapods.CocoaLumberjack」は、バンドル「[CocoaLumberjack.framework、CocoaLumberjack.framework]」で使用されています

CocoaLumberjackは、過去に何度も問題なく使用してきたサードパーティのライブラリです。かなり混乱しています。

この質問/回答 Framework CFBundleIdentifier Collision で指定されているため、フレームワークの.plistキーワードCFBundlePackageTypeとは関係ありません。 CocoaLumberjackバンドルパッケージタイプは「フレームワーク」です(CFBundlePackageType = FMWK)。 CocoaLumberjackは、cocoapodsを使用してプロジェクトに追加された、広く使用されているサードパーティのライブラリです。

問題はおそらく私のApp BundleのwatchOSターゲットに関連しています。 CocoaLumberjackライブラリはiOSアプリとwatchOSアプリの両方で使用されており、バンドル識別子の重複に関する問題を引き起こしています。

CFBundleIdentifierの衝突は、Apple iOSターゲットとWatch Extensionの間でフレームワークを共有している場合にサーバーを接続することによって検出されます。

target 'App' do
 platform :ios, '9.0'
 # Pods for App
 ...
 pod 'CocoaLumberjack/Swift', '~> 3.5.3'
 ...
end

target 'AppWatch Extension' do
 platform :watchos, '5.0'
 # Pods for Watch Extension
 ...
 pod 'CocoaLumberjack/Swift', '~> 3.5.3'
 ...
end

IOSアプリはライブラリを使用しており、watchOS拡張機能は同じライブラリを使用しています。彼らは異なるライブラリを使用していますが、CocoaLumberjackは両方に存在する唯一のライブラリです。

同じライブラリ構成で問題なく、過去に何度もアプリを公開しました。 Appleは、過去数日間のバンドル識別子に関するいくつかの制約を変更したと思います。

Carthageを使用しても同じ問題が発生します。

12
cristallo

Carthageの問題を回避する方法は次のとおりです。

1)異なるカーセージビルドフェーズを分離するカーセージビルドスクリプトを作成する

2)実際のフレームワークのビルドを行うとき。最初にiOS用の問題のあるフレームワークをビルドし(私は1つしかありませんでした)、次にプロジェクトファイルを変更してバンドルIDを変更し、次にwatchOS用にそれらのフレームワークをビルドしてから、残りのフレームワークをビルドします

carthage bootstrap --no-checkout
carthage checkout
#undo previous CFBundleIdentifier changes
sed -i '' 's/com.someco.MyFramework.watchOS;/com.someco.MyFramework;/g' Carthage/Checkouts/MyFramework/MyFramework.xcodeproj/project.pbxproj
carthage build --cache-builds --platform iOS
#set a unique CFBundleIdentifier
sed -i '' 's/com.someco.MyFramework;/com.someco.MyFramework.watchOS;/g' Carthage/Checkouts/MyFramework/MyFramework.xcodeproj/project.pbxproj
carthage build --no-use-binaries --platform watchOS --configuration $CONF $VERBOSE MyFramework

0
Daniel

1つのオプションは、「。watchos "(abc.asd.alomofire.watchos)をウォッチバンドル識別子に手動で追加します。

0
Saurabh Bisht