簡體   English   中英

從 Crashlytics 遷移到 Firebase 時,如何在一個 iOS 應用程序中處理多個方案/目標?

[英]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 個文件中挑選出所需名稱添加。

這是如何執行上述步驟。

  1. 選擇Target1 (無論您的目標名稱是什么)
  2. 現在,在頂部可用選項卡中選擇“構建階段”。
  3. 在這里,您將在左上角看到“+”按鈕。 點擊它。
  4. 會有多個選項,現在從那里選擇New Run Script Phase 它將在您的列表中添加一個名為 Run Script 的新Run Script 如果需要,您可以通過雙擊名稱來更改它的名稱。 就我而言,我保留了名稱RunScriptForGooglePlist
  5. 會有值為/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM