有點拗口的標(biāo)題,新建target用來區(qū)分不同的環(huán)境(預(yù)研的,測試的等等)網(wǎng)上有很多文章婚瓜,這里不贅述了歼跟。今天主要是針對帶有Extension的工程要新建target,又不想新建Extension來匹配新建的target声登,所以這里記述一下狠鸳。
由于Extension需要與宿主target的bundle id
保持相同的前綴,因此帶有Extension的工程的target復(fù)制以后悯嗓,要使用Extension就需要新建一個件舵,本著能少摳一個字就絕不多敲一下的原則,我們可以在scheme
里添加一個腳本:
- 打開target1的
Edit Scheme
頁面脯厨,如圖展開Build選項Group 4.png - 在
Pre-actions
里添加腳本Group 3.png - 復(fù)制腳本铅祸,注意
Provide build settings from
選項要選相應(yīng)的target,否則編譯不過Group 2.png - close結(jié)束俄认。以上步驟只是完成其中一個target个少,
你有幾個target需要用到這個extension洪乍,哪幾個target的scheme的就都要重復(fù)一遍這幾步
。腳本里寫的很清楚里夜焦,編譯不同的target就會把這個extension的Info.plist
的Bundle Id
改成對應(yīng)前綴壳澳。
看一下腳本:
#!/bin/bash
buildID=${PRODUCT_BUNDLE_IDENTIFIER}
extId="your extension's name"
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier $buildID.$extId" "${SRCROOT}/${extId}/Info.plist"
- 腳本里的
extId
要跟你的extension的bundleid里的名字后綴符合,比如我的extension叫com.broway.app.ShareExtensionService
茫经,那么這個extId
就是ShareExtensionService
巷波。 - 后面
${SRCROOT}/${extId}/Info.plist
是你extension文件夾里Info.plist
的路徑,粘貼的時候確認(rèn)一下路徑是否正確卸伞。
現(xiàn)在跑不同的target的時候可以看到extension的Info.plist
里的id是會變的抹镊。
可能包含的問題:
Works fine to run locally. However, when I try to upload an archived version of each target to the App Store, I get an error which is similar to this one for one out of two targets. Anyone got an idea how to fix this? @Erumaru is this the same issue you experienced? Have you find a solution to fix it?
原帖里有評論說在打包的時候報錯,我覺得是不是要在archive那欄里也添加這個腳本荤傲,目前還沒試過上傳垮耳,后面遇到了我會來改。