[英]Add Firebase Analytics and Crashlytics to iOS project with multiple schemes
[英]How to handle multiple schemes/targets in one iOS app when migrating from Crashlytics to Firebase?
我目前正在按照 Fabric 的指南將我的應用程序從 Crashlytics 遷移到 Firebase Crashlytics。
我的場景是,在我的應用程序中,我有四個不同的方案(四個目標)和四個不同的包標識符,它們對應於我的 dev、internal-qa、client-qa 和實時服務器。
我為四個“應用程序”創建了四個不同的項目,就像我在 Fabric Crashlytics 中所做的那樣。
現在下一步是在我的項目中添加由 Firebase 生成的“GoogleService-Info.plist”。 我的四個應用程序的所有四個 Firebase 項目(實際上是同一個應用程序的不同方案)生成了一個同名的 plist。 它目前看起來像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AD_UNIT_ID_FOR_BANNER_TEST</key>
<string>XXXXXXXX</string>
<key>AD_UNIT_ID_FOR_INTERSTITIAL_TEST</key>
<string>XXXXXXXXX</string>
<key>CLIENT_ID</key>
<string>XXXXXXXXXX</string>
<key>REVERSED_CLIENT_ID</key>
<string>XXXXX</string>
<key>API_KEY</key>
<string>XXXXXX</string>
<key>GCM_SENDER_ID</key>
<string>XXXXXXX</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>[MY SCHEME BUNDLE ID]</string>
<key>PROJECT_ID</key>
<string>[MY PROJECT ID]</string>
<key>STORAGE_BUCKET</key>
<string>XXXXXXXXX</string>
<key>IS_ADS_ENABLED</key>
<true></true>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<false></false>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>XXXXXXXXX</string>
<key>DATABASE_URL</key>
<string>XXXXXXXXXXX</string>
</dict>
</plist>
我該怎么做? 只需在我的項目中以不同的名稱添加所有四個? 或者只是添加所有四個但修改每個的目標成員資格? 畢竟,plist 中的 bundle id、app 鍵是不同的。 我們應該如何處理一個iOS App中多個方案的情況?
這是我在我的項目中處理同樣事情的方式。 我保留了 4 個不同名稱的 GoogleService-Info.Plist 文件,並將它們保存在我項目的文件夾中。 但是請確保您沒有在項目導航器中添加相同的內容。(因此,這 4 個文件將駐留在我的項目文件夾中,但不在我的項目中。簡而言之,它不會被自動編譯。)
現在,您必須在每 4 個目標中添加運行腳本,以便以編程方式將每個 plist 文件的名稱更改為所需名稱,然后以編程方式將其添加到捆綁包中,以便僅從 4 個文件中挑選出所需名稱添加。
這是如何執行上述步驟。
Target1
(無論您的目標名稱是什么)New Run Script Phase
。 它將在您的列表中添加一個名為 Run Script 的新Run Script
。 如果需要,您可以通過雙擊名稱來更改它的名稱。 就我而言,我保留了名稱RunScriptForGooglePlist
。/bin/sh
Shell
。 就在其下方,將有 textview,您必須在其中編寫以下代碼。 確保您正在根據 plist 文件的名稱更改文件的必要名稱更改。在這里,是相同的代碼。
PATH_TO_GOOGLE_PLISTS="${PROJECT_DIR}/MyProjectFolder/GooglePlists"
cp -r "$PATH_TO_GOOGLE_PLISTS/GoogleService-Info-dev.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
在這里,第一行代碼,我正在使用文件夾的路徑,其中所有 4 個 google plist 文件都保存有 4 個不同的名稱。
並且,在第二行中,我將此文件復制到新位置,即我的應用程序的應用程序包,並具有所需的名稱。(正如我在頂部已經提到的,因為我們沒有將這 4 個文件全部添加到包中,因此它們不是將被編譯。而且,應用程序包將沒有此文件。在此腳本中,您將此所需文件添加到其所需位置,其名稱是 google/firebase sdk 所需的名稱)。
您必須重復上面的所有 4 個目標的相同過程,並且在上述代碼的第二行中,只需根據給定目標的需要更改名稱。
如果您沒有完成上述任何步驟或仍然無法正常工作,請發表評論,我一定會幫助您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.