अलग देव और उत्पादों फायरबेस पर्यावरण


154

मैं एमबीएएस के रूप में फायरबेस का उपयोग करने पर विचार कर रहा हूं, हालांकि मुझे निम्नलिखित समस्या का कोई विश्वसनीय समाधान नहीं मिला:

मैं दो अलग-अलग फायरबेस वातावरण, एक विकास के लिए और एक उत्पादन के लिए स्थापित करना चाहूंगा, लेकिन मैं विकास और उत्पादन पर्यावरण के बीच सुविधाओं की मैनुअल प्रति (जैसे रिमोट कॉन्फ़िगरेशन सेटअप, अधिसूचना नियम आदि) नहीं करना चाहता। ।

क्या कोई उपकरण या विधि है जिस पर मैं भरोसा कर सकता हूं? स्क्रैच से रिमोट कॉन्फ़िगरेशन या सूचना नियम सेट करना चुनौतीपूर्ण काम हो सकता है और बहुत जोखिम भरा भी।

कोई सुझाव? क्या दो अलग-अलग वातावरण होने से बेहतर दृष्टिकोण है?

इससे पहले कि आप सवाल का एक और उत्तर पोस्ट करें जो बताता है कि अलग-अलग फायरबेस खाते कैसे सेट करें: यह सवाल नहीं है, इसे फिर से पढ़ें। सवाल यह है कि अलग-अलग देव और ठेस खातों या किसी भी बेहतर समाधान के बीच मैन्युअल रूप से कॉपी करने की तुलना में ट्रांसफ़र कैसे बदलता है।


3
यह एक सुविधा के रूप में बहुत अच्छा होगा!
पैट्रिक


@ टिममेर पहला जवाब देखें: केवल होस्टिंग और डेटाबेस के लिए प्रासंगिक है, लेकिन अन्य सुविधाओं के लिए नहीं।
6

मुझे एक समान समस्या थी। मैंने इसे निम्नलिखित तरीके से हल किया : यह जांचें: stackoverflow.com/questions/51646512/… मैंने इसे इस तरीके से हल किया: 1. डिबग कॉन्फ़िगरेशन को लिंक करें कृपया लिंक का पालन करें मध्यम http://www.@Miqubel/ … मध्यम. com / @ Miqubel/ … 2. फिर एक नया डेटाबेस बनाएं कृपया लिंक का अनुसरण करें: firebase.google.com/docs/database/usage/… 3. 3. अपने कोड के आधार पर अपने उत्पाद के स्वाद के आधार पर संबंधित डेटाबेस से कनेक्ट करें उत्पाद पर
कुणाल खैरे

1
@LOG_TAG पूरी तरह से नया टैग बनाने के लिए आपका तर्क क्या है? क्या यह किसी भी नई तकनीकों को पहले से ही [फायरबेस] द्वारा कवर नहीं करता है?
माइकल डोड

जवाबों:


24

जैसा कि सभी ने बताया है - आपको एक से अधिक प्रोजेक्ट / डेटाबेस की आवश्यकता है।

लेकिन आपके प्रश्न का उत्तर देने के लिए विकास से उत्पादन तक सेटिंग्स / डेटा आदि की नकल करने में सक्षम होना चाहिए। मुझे ठीक वैसी ही जरूरत थी। विकास और परीक्षण में कुछ महीने, मैं डेटा को मैन्युअल रूप से कॉपी नहीं करना चाहता था।

मेरा परिणाम डेटा को एक भंडारण बाल्टी में बैकअप करना था, और फिर इसे वहां से दूसरे डेटाबेस में पुनर्स्थापित करना था। यह करने के लिए एक बहुत ही कच्चा तरीका है - और मैंने एक संपूर्ण डेटाबेस बैकअप / पुनर्स्थापना किया - लेकिन आप अधिक नियंत्रित तरीके से उस दिशा में देखने में सक्षम हो सकते हैं। मैंने इसका उपयोग नहीं किया है - यह बहुत नया है - लेकिन यह एक समाधान हो सकता है: एनपीएम मॉड्यूल फायरस्टार-निर्यात-आयात

संपादित करें : फायरस्टार बैकअप / निर्यात / आयात जानकारी यहां क्लाउड फायरस्टार निर्यात और डेटा आयात करना

यदि आप फायरबेस आरटीडीबी का उपयोग कर रहे हैं, और फायरस्टार का नहीं - यह प्रलेखन मदद कर सकता है: फायरबेस स्वचालित बैकअप

आपको अपने उत्पादन डेटाबेस को उसी भंडारण बाल्टी तक पहुंचने की अनुमति देने के लिए अनुमतियों को सही ढंग से सेट करने की आवश्यकता होगी जैसे कि आपके विकास की। सौभाग्य।


1
धन्यवाद, यह अब तक का सबसे अच्छा जवाब है।
3

4
ऐसे किसी भी प्रोजेक्ट के लिए जिसमें कुछ हज़ार उपयोगकर्ता हैं, आप उत्पादन डेटाबेस से कुछ डेटा को एक स्टेजिंग या डेवलपमेंट सर्वर तक ले जाएंगे । यह शर्म की बात है कि यह फायरबेस में नहीं बनाया गया है, लेकिन यह कुछ ऐसा है जिसे किसी भी प्रकार की परियोजना के लिए किया जाना चाहिए।

मैंने "प्रोजेक्ट्स के बीच बढ़ते डेटा" गाइड का उपयोग करके डेटाबेस आयात किया। लेकिन इसने Datastore मोड में Firestore डेटाबेस बनाया। मुझे इसे मूल मोड में उपयोग करने की आवश्यकता है।
देबिप्रसाद

54

यदि आप फायरबेस-टूल्स का उपयोग कर रहे हैं तो एक कमांड है firebase useजो आपको सेट करता है कि आप किस प्रोजेक्ट के लिए उपयोग कर रहे हैंfirebase deploy

firebase use --addआपकी परियोजनाओं की एक सूची लाएगा, एक का चयन करें और यह आपसे एक उपनाम के लिए पूछेगा। वहाँ से आप कर सकते हैं firebase use aliasऔर firebase deployउस परियोजना के लिए धक्का होगा।

मेरे व्यक्तिगत उपयोग में, मेरे पास मेरा ऐप और मेरा ऐप-डीआर फायरबेस कंसोल में प्रोजेक्ट के रूप में है।


1
जहाँ तक मुझे समझ में आया है कि फायरबेस उपकरण होस्टेड फ़ाइलों और डेटाबेस को तैनात करने के लिए उपयोगी हैं, लेकिन यह डेटाबेस, एनालिटिक्स या रिमोट कॉन्फिगरेशन के साथ कुछ भी नहीं करता है। या क्या मैं कुछ न कुछ भूल रहा हूं?
आरएसी

@ यह ऐसा लगता है कि यह हाल ही में है, लेकिन मैं अपने देव उदाहरण पर डेटा सीडिंग / डेटा रखरखाव के लिए cli का उपयोग करने की कोशिश शुरू करने जा रहा हूँ: firebase.googleblog.com/2015/11/…
Chris

@ धन्यवाद, यह कम से कम एक शुरुआत है। लेकिन यह करने के लिए एक बल्कि रहस्यमय बात की तरह लग रहा है। सौभाग्य!
दौड़

@ डेटा और विकास प्रवाह के रूप में जहाँ तक जाता है, यह वास्तव में अच्छी तरह से काम किया है। मैं मज़बूती से अपने देव डेटाबेस को वैरिएबल एनपीएम रन कमांड और वर्जन सीड डेटा के आधार पर म्यूट कर सकता हूं। आप मेटा डेटा को कॉपी करने का तरीका ढूंढ रहे थे लेकिन मैंने दुर्भाग्यवश ऐसा नहीं देखा।
क्रिस

@ हमें इसके बारे में बताने के लिए धन्यवाद। यह अभी भी एक खुला सवाल है जहां तक ​​मैं बता सकता हूं।
दौड़

25

मैं वर्तमान में फायरबेस का उपयोग नहीं कर रहा हूं, लेकिन इसे खुद की तरह समझ रहा हूं। ऐसा लगता है कि जाने का तरीका कंसोल पर एक पूरी तरह से अलग परियोजना बनाना है। पुराने फायरबेस साइट पर इसकी सिफारिश करने के लिए एक ब्लॉगपोस्ट था, हालांकि अब इसे हटा दिया जाता है। https://web.archive.org/web/20160310115701/https://www.firebase.com/blog/2015-10-29-managing-development-environments.html

इसके अलावा यह चर्चा समान है: https://groups.google.com/forum/# ​​.msg / firebase-talk / L7ajIJoHPcA / 7dsNUTDlyRYJ


2
जवाब के लिए धन्यवाद। दो अलग-अलग परियोजनाएं होने की संभावना सबसे अधिक एकमात्र विकल्प है। हालांकि, उनके बीच डेटा की नकल करना सबसे अच्छा है। मुझे आश्चर्य है कि अगर Firebase टूल नियम, ऑडियंस सेटअप आदि की नकल कर सकता है, तो मुझे ऐसा लगता है कि यह केवल डेटाबेस से संबंधित कार्यों से संबंधित है: github.com/firebase/firebase-tools
racs

2
यकीन नहीं होता कि आपने यह देखा है, लेकिन आप अपने देव को
फायरबेस

2
ठीक यही मैंने किया है, लेकिन सवाल यह है कि आप दोनों पर्यावरण के बीच किसी भी सेटअप की नकल कैसे कर सकते हैं? उदाहरण के लिए। दूरस्थ विन्यास, दर्शक सेटअप, आदि? इन्हें उत्पादन परिवेश में मैन्युअल रूप से जोड़ना बल्कि त्रुटि प्रवणता है।
आरएस

2
एक समस्या जिसे मैंने चलाया है, एक ही पैकेज और हस्ताक्षर के साथ कई फायरबेस उदाहरणों के साथ प्रमाणीकरण है। कंसोल आपको एक ही पैकेज sha1 को एक से अधिक प्रोजेक्ट में जोड़ने की अनुमति नहीं देगा, इसलिए यह संभव नहीं हो सकता है। डॉक्स का कहना है कि वाइटेलिस्टिंग क्लायंटिड द्वारा चारों ओर एक काम है, लेकिन मुझे इसके साथ सफलता नहीं मिली है। आसपास का अन्य काम पैकेज के नामों को अलग करता है (अधिक सटीक रूप से 'ApplicationIds)' लेकिन फिर अन्य जटिलताएं हैं
पैट्रिक

3
इसे भी पढ़े: firebase.googleblog.com/2016/08/…
racs

8

जिस तरह से मैंने किया:

  1. मेरे पास फायरबेस पर 2 परियोजनाएं थीं- PROD के लिए DEV अन्य के लिए एक
  2. स्थानीय रूप से मेरे ऐप की भी 2 शाखाएँ थीं - एक का नाम DEV, दूसरे का नाम PROD
  3. मेरी DEV शाखा में, मेरे पास हमेशा DEV फायरबेस प्रोजेक्ट की JSON फाइल है और इसी तरह PROD के लिए है

इस तरह मुझे अपने JSON को बनाए रखने की आवश्यकता नहीं है।


1
मैं समझता हूं, लेकिन नवीनतम फायरबेस संस्करण के अनुसार पूछे गए प्रश्न का कोई सामान्य समाधान नहीं है। आपको वर्तमान विकल्पों के साथ खेलना होगा और एक सर्वोत्तम अभ्यास प्राप्त करना होगा। हो सकता है कि मेरा जवाब इस ओर इशारा नहीं कर रहा था, लेकिन मैं सिर्फ अपने दृष्टिकोण के साथ पूछने वाले की मदद करना चाहता हूं।
कुणाल खैरे

5

यह ब्लॉगपोस्ट डीबग और रिलीज़ बिल्ड प्रकार के साथ एक बहुत ही सरल दृष्टिकोण का वर्णन करता है।

संक्षेप में:

  • विभिन्न एप्लिकेशन आईडी प्रत्यय का उपयोग करके प्रत्येक बिल्ड प्रकार के लिए फायरबेस पर एक नया ऐप बनाएं।
  • अपने Android प्रोजेक्ट को नवीनतम JSON फ़ाइल के साथ कॉन्फ़िगर करें।
  • ApplicationIdSuffix का उपयोग करके, बिल्ड प्रकार के आधार पर Firebase पर विभिन्न एप्लिकेशन से मिलान करने के लिए Application Id को बदलें।

=> विस्तृत विवरण के लिए ब्लॉगपोस्ट देखें।

यदि आप विभिन्न बिल्ड फ्लेवर का उपयोग करना चाहते हैं, तो आधिकारिक फायरबेस ब्लॉग से इस व्यापक ब्लॉगपोस्ट को पढ़ें । इसमें बहुत सारी बहुमूल्य जानकारी होती है।

उम्मीद है की वो मदद करदे!


आपके जवाब के लिए धन्यवाद। मैं विभिन्न एप्लिकेशन सेट करने में सक्षम था, फिर भी मैं एफबी देव ऐप से एफबी प्रोडक्ट ऐप तक विभिन्न सेटअप की प्रतिलिपि बनाने के लिए एक विधि की तलाश कर रहा हूं जैसा कि मैंने प्रश्न में पूछा था। (उदा। रिमोट
कॉन्फिगरेशन

2
कृपया ध्यान दें कि यह एक ही परियोजना के अंदर दो ऐप बनाता है इसलिए आप कुछ सेवाओं जैसे एनालिटिक्स को अलग करेंगे लेकिन डेटाबेस साझा किया जाएगा इसलिए वातावरण का वास्तविक पृथक्करण नहीं है जैसा कि यहाँ बताया गया है firebase.googleblog.com/2016/08/…
AntPachon

5

आपको विभिन्न बिल्ड प्रकारों को प्रबंधित करने की आवश्यकता होगी

इसका पीछा करो

  1. सबसे पहले, Firebase कंसोल पर एक नया प्रोजेक्ट बनाएं, जिसका नाम है ORAPPNAME-DEV

  2. "एंड्रॉइड ऐप जोड़ें" बटन पर क्लिक करें और एक नया ऐप बनाएं। उदाहरण के लिए इसे com.yourapp.debug नाम दें। नई google-services.json फ़ाइल अपने आप डाउनलोड हो जाएगी

  3. अपनी परियोजना के तहत src निर्देशिका "डिबग" नाम के साथ नई निर्देशिका बनाएं और यहां नई google-services.json फ़ाइल की प्रतिलिपि बनाएँ

  4. अपने मॉड्यूल स्तर में build.gradle इसे जोड़ें

    debug {
            applicationIdSuffix ".debug"
        }
    

अब जब आप एक डिबग बिल्ड google-services.json बनाते हैं तो "डीबग" फ़ोल्डर से उपयोग किया जाएगा और जब आप रिलीज़ मोड में निर्माण करेंगे तो google-services.json मॉड्यूल रूट निर्देशिका से माना जाएगा।


मामले में किसी को भी आधिकारिक दस्तावेज की जरूरत है, Google सेवाओं के Gradle प्लगइन की उप-निर्देशिका के तहत गूगल-services.json देखने के लिए जानता है srcbuildType के लिए यहां बताए गए developers.google.com/android/guides/...
माइकल Osofsky

4

अपनी स्थिति के लिए इसे हल करने के लिए मैंने तीन फायरबेस प्रोजेक्ट्स बनाए, जिनमें से प्रत्येक एक ही एंड्रॉइड प्रोजेक्ट (यानी दूसरों द्वारा सुझाए गए applicationIdउपयोग के बिना समान applicationIdSuffix)। इसके परिणामस्वरूप तीन google-services.json फाइलें मिलीं, जिन्हें मैंने कस्टम कंट्री वैरिएबल के रूप में अपने कॉन्टीन्यूअस इंटीग्रेशन (CI) सर्वर में स्टोर किया था । बिल्ड के प्रत्येक चरण (dev / staging / prod) के लिए, मैंने संबंधित google-services.json फ़ाइल का उपयोग किया।

देव से जुड़े फायरबेस प्रोजेक्ट के लिए, अपने एंड्रॉइड प्रोजेक्ट में, मैंने डीबग SHA प्रमाणपत्र फिंगरप्रिंट जोड़ा। लेकिन स्टेजिंग और ठेस के लिए मेरे पास सिर्फ CI साइन एपीके है।

यहाँ एक स्ट्राइप्ड-डाउन है .gitlab-ci.ymlजो इस सेटअप के लिए काम करता है:

# This is a Gitlab Continuous Integration (CI) Pipeline definition
# Environment variables:
#   - variables prefixed CI_ are Gitlab predefined environment variables (https://docs.gitlab.com/ee/ci/variables/predefined_variables.html)
#   - variables prefixed GNDR_CI are Gitlab custom environment variables (https://docs.gitlab.com/ee/ci/variables/#creating-a-custom-environment-variable)
#
# We have three Firebase projects (dev, staging, prod) where the same package name is used across all of them but the
# debug signing certificate is only provided for the dev one (later if there are other developers, they can have their
# own Firebase project that's equivalent to the dev one).  The staging and prod Firebase projects use real certificate
# signing so we don't need to enter a Debug signing certificate for them.  We don't check the google-services.json into
# the repository.  Instead it's provided at build time either on the developer's machine or by the Gitlab CI server
# which injects it via custom environment variables.  That way the google-services.json can reside in the default
# location, the projects's app directory.  The .gitlab-ci.yml is configured to copy the dev, staging, and prod equivalents
# of the google-servies.json file into that default location.
#
# References:
# https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html
# /programming/57129588/how-to-setup-firebase-for-multi-stage-release

stages:
  - stg_build_dev
  - stg_build_staging
  - stg_build_prod

jb_build_dev:
  stage: stg_build_dev
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_DEV_FILE} app/google-services.json
    - ./gradlew :app:assembleDebug
  artifacts:
    paths:
      - app/build/outputs/apk/

jb_build_staging:
  stage: stg_build_staging
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  dependencies: []
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_STAGING_FILE} app/google-services.json
    - ./gradlew :app:assembleDebug
  artifacts:
    paths:
      - app/build/outputs/apk/

jb_build_prod:
  stage: stg_build_prod
  image: jangrewe/gitlab-ci-android
  cache:
    key: ${CI_PROJECT_ID}-android
    paths:
      - .gradle/
  dependencies: []
  script:
    - cp ${GNDR_CI_GOOGLE_SERVICES_JSON_PROD_FILE} app/google-services.json

    # GNDR_CI_KEYSTORE_FILE_BASE64_ENCODED created on Mac via:
    # base64 --input ~/Desktop/gendr.keystore --output ~/Desktop/keystore_base64_encoded.txt
    # Then the contents of keystore_base64_encoded.txt were copied and pasted as a Gitlab custom environment variable
    # For more info see http://android.jlelse.eu/android-gitlab-ci-cd-sign-deploy-3ad66a8f24bf
    - cat ${GNDR_CI_KEYSTORE_FILE_BASE64_ENCODED} | base64 --decode > gendr.keystore

    - ./gradlew :app:assembleRelease
      -Pandroid.injected.signing.store.file=$(pwd)/gendr.keystore
      -Pandroid.injected.signing.store.password=${GNDR_CI_KEYSTORE_PASSWORD}
      -Pandroid.injected.signing.key.alias=${GNDR_CI_KEY_ALIAS}
      -Pandroid.injected.signing.key.password=${GNDR_CI_KEY_PASSWORD}
  artifacts:
    paths:
      - app/build/outputs/apk/

मैं इस समाधान से खुश हूं क्योंकि यह build.gradle ट्रिक पर भरोसा नहीं करता है, जो मुझे लगता है कि बहुत अपारदर्शी हैं और इस तरह बनाए रखना मुश्किल है। उदाहरण के लिए, जब मैंने उपयोग करने के तरीकों की कोशिश की applicationIdSuffixऔर अलग-अलग buildTypeएस ने पाया कि जब मैं निर्माण प्रकारों का उपयोग करने की कोशिश कर रहा था, तो मुझे चलाने या संकलन करने के लिए इंस्ट्रूमेंट किए गए परीक्षण नहीं मिल सकते थे testBuildType। एंड्रॉइड विशेष गुण देने लगा था debug buildTypeजिसे मैं समझने के लिए निरीक्षण नहीं कर सकता था।

वस्तुतः, सीआई मेरे अनुभव में, हालांकि काफी पारदर्शी और बनाए रखने में आसान हैं। दरअसल, मैंने जिस दृष्टिकोण का वर्णन किया है वह काम किया है: जब मैं एक एमुलेटर पर सीआई द्वारा उत्पन्न किए गए प्रत्येक APK को चलाता था, तो फायरबेस कंसोल "इंस्टॉलेशन को सत्यापित करने के लिए अपना ऐप चलाएं" चरण से चला गया

जाँच की जा रही है कि क्या ऐप ने हमारे सर्वर के साथ संवाद किया है। आपको अपने ऐप को अनइंस्टॉल और पुनर्स्थापित करना पड़ सकता है।

सेवा:

बधाई हो, आपने अपने ऐप में सफलतापूर्वक Firebase जोड़ा है!

तीनों ऐप्स के लिए जैसा कि मैंने उन्हें एमुलेटर में एक-एक करके शुरू किया था।


इस विस्तृत विवरण के लिए धन्यवाद, माइकल। मैंने केवल अलग-अलग स्वादों को जोड़कर एक ही परिणाम का प्रबंधन किया और प्रत्येक स्वाद के लिए फ़ोल्डर्स के नीचे appropiate google-services.json को कॉपी किया। हालाँकि, यह मेरा सवाल नहीं था, कृपया इसे फिर से पढ़ें।
4

मैं @ सहमत हूं लेकिन दुर्भाग्य से जब मैंने stackoverflow.com/questions/37450439/… लिखा , तो इसे stackoverflow.com/users/807126/doug-stevenson
माइकल योफस्की

1
डग ... तुमने क्या किया है! : DI यहां आपके उत्तर पर कोई आपत्ति नहीं है, मुझे यकीन है कि यह कुछ लोगों के लिए मददगार है जो अलग पर्यावरण के लिए समाधान की मांग कर रहे हैं।
आरएसी

हाँ, हम अपने मोबाइल एप्लिकेशन के लिए एक समाधान ढूंढ रहे हैं जिसे फायरबेस सेवा के साथ अलग वातावरण की आवश्यकता है। यह निश्चित रूप से हमारे लिए एक अच्छा शुरुआती बिंदु है। हम इसे आजमाएंगे।
LT

2

फायरबेस के पास इस पर एक पृष्ठ है जो इसे देव और ठेस के लिए कैसे सेट किया जाता है

https://firebase.google.com/docs/functions/config-env

अपनी परियोजना के लिए पर्यावरण कॉन्फ़िगरेशन सेट करें पर्यावरण डेटा संग्रहीत करने के लिए, आप फायरबेस फ़ंक्शन का उपयोग कर सकते हैं: कॉन्फ़िगरेशन: फायरबेस सीएलआई में कमांड सेट करें। प्रत्येक कुंजी को समूह से संबंधित कॉन्फ़िगरेशन में एक साथ अवधियों का उपयोग करके नाम दिया जा सकता है। ध्यान रखें कि कुंजियों में केवल लोअरकेस वर्ण स्वीकार किए जाते हैं; अपरकेस वर्णों की अनुमति नहीं है।

उदाहरण के लिए, "कुछ सेवा" के लिए क्लाइंट आईडी और एपीआई कुंजी को स्टोर करने के लिए, आप चला सकते हैं:

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

वर्तमान पर्यावरण कॉन्फ़िगरेशन को पुनः प्राप्त करें अपनी परियोजना के लिए वर्तमान में पर्यावरण कॉन्फ़िगरेशन में क्या संग्रहीत है, इसका निरीक्षण करने के लिए, आप फायरबेस फ़ंक्शन का उपयोग कर सकते हैं: कॉन्फ़िगरेशन: प्राप्त करें। यह JSON को कुछ इस तरह आउटपुट करेगा:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

1
404 पर हल करता है। अगली बार सामग्री भी शामिल करें!
कोरेथन

1

मैं इस उत्तर को अपडेट कर रहा हूँ जो मुझे अभी मिली जानकारी के आधार पर है।

चरण 1

Firebase.google.com में, अपने कई वातावरण बनाएं (जैसे; देव; मंचन, ठेस)


mysite-देव

mysite-मचान

mysite-prod


चरण 2

ए। सीधे आप अपने डिफ़ॉल्ट होना चाहते हैं (यानी; देव)

ख। Daudfirebase deploy

सी। एक बार तैनात हो, भागोfirebase use --add

घ। वर्तमान में आपके पास विभिन्न परियोजनाओं से चयन करने के लिए एक विकल्प आएगा।

उस प्रोजेक्ट पर स्क्रॉल करें जिसे आप जोड़ना चाहते हैं: mysite-staging , और इसे चुनें।

इ। फिर आपको उस प्रोजेक्ट के लिए एक उपनाम के लिए कहा जाएगा। मंचन दर्ज करें ।

ठेस और देव के लिए आइटम को फिर से चलाएं, ताकि प्रत्येक वातावरण में एक उपनाम हो


जानिए आप किस माहौल में हैं

Daud firebase use default (mysite-dev)

* dev (mysite-dev)

staging (mysite-staging)

prod (mysite-dev)

(वातावरण में से एक के बाईं ओर एक तारांकन चिह्न होगा। यह वह है जो आप वर्तमान में हैं। यह नीले रंग में भी हाइलाइट होगा)


वातावरण के बीच स्विच करें

दौड़ना firebase use stagingया firebase use prodउनके बीच जाना।

एक बार जब आप चाहते हैं कि वातावरण में, आप चलाएं firebase deployऔर आपकी परियोजना वहां तैनात होगी।

यहाँ कुछ उपयोगी लिंक है ...

सीएलआई संदर्भ

कई वातावरण में तैनात

उम्मीद है की यह मदद करेगा।


जब आप कई वातावरण कहते हैं, तो आप कई परियोजनाओं का मतलब है?
वालिदव

0

जिस तरह से हम कर रहे हैं वह विभिन्न वातावरणों के लिए अलग-अलग json कुंजी फ़ाइलों को बनाने से है। हमने Google द्वारा अनुशंसित सेवा खाता सुविधा का उपयोग किया है और एक विकास फ़ाइल और दूसरी उत्पादन के लिए है

यहाँ छवि विवरण दर्ज करें


0

देव के साथ टो प्रोजेक्ट बनाएं और फायरबेस पर प्रोडक्शन एनवायरनमेंट को thre से json फाइल डाउनलोड करें

और SDK को प्रति के अनुसार सेटअप करें: https://firebase.google.com/docs/android/setup या क्रैशशेटिक्स के लिए: https://firebase.google.com/docs/crashlytics/get-started?platform=android

सबसे पहले, प्रत्येक बिल्ड के लिए संबंधित google_services.json को निम्न स्थानों पर रखें:

app/src/debug/google_services.json
app/src/test/google_services.json
app/google_services.json

नोट: रूट ऐप / google_services.json यह फ़ाइल बिल्ड वेरिएंट के अनुसार होनी चाहिए, रूट कोड फ़ाइल में json कोड की प्रतिलिपि बनाएँ

अब, चलो अपने में कुछ धीरे-धीरे काम कोड़ा: एप्लिकेशन के build.gradle को उपयुक्त google_services.json को ऐप / google_services.json पर ले जाने के लिए स्वचालित करने के लिए।

इसे एप्लिकेशन / ग्रेड फ़ाइल में कॉपी करें

task switchToDebug(type: Copy) {
description = 'Switches to DEBUG google-services.json'
from "src/debug"
include "google-services.json"
into "."
}

task switchToRelease(type: Copy) {
description = 'Switches to RELEASE google-services.json'
from "src/release"
include "google-services.json"
into "."
}

महान - लेकिन अपने ऐप को बनाने से पहले इन कार्यों को मैन्युअल रूप से चलाना आपके लिए बोझिल है। हम चाहते हैं कि उपयुक्त कॉपी टास्क कुछ समय पहले चला जाए: असेंबडेबग या: असेंबलीरेज चलाया जाता है। आइए देखें कि क्या होता है जब: assembleRelease चलाया जाता है: इस को / gradlew फ़ाइल में कॉपी करें

Zaks-MBP:my_awesome_application zak$ ./gradlew assembleRelease
Parallel execution is an incubating feature.
.... (other tasks)
:app:processReleaseGoogleServices
....
:app:assembleRelease

सूचना: एप्लिकेशन: processReleaseGoogleServices कार्य। यह कार्य रूट google_services.json फ़ाइल को संसाधित करने के लिए ज़िम्मेदार है। हम चाहते हैं कि सही google_services.json को संसाधित किया जाए, इसलिए हमें अपना कॉपी कार्य पहले ही चलाना चाहिए। इसे अपने build.gradle में जोड़ें। नोट जारी करने के बाद संलग्न करें।

इसे एप्लिकेशन / ग्रेड फ़ाइल में कॉपी करें

afterEvaluate {
processDebugGoogleServices.dependsOn switchToDebug
processReleaseGoogleServices.dependsOn switchToRelease
}

अब, कभी भी: ऐप: processReleaseGoogleServices को कहा जाता है, हमारा नया परिभाषित: ऐप: switchToRelease पहले से कहा जाएगा। डीबग बिल्डटाइप के लिए समान तर्क। आप चला सकते हैं: app: assembleRelease और रिलीज़ संस्करण google_services.json अपने ऐप मॉड्यूल के रूट फ़ोल्डर में स्वचालित रूप से कॉपी हो जाएगा।


1
आपने इस उत्तर में बहुत सारी ऊर्जा लगाई है, लेकिन 1. इसका सवाल से कोई लेना देना नहीं है (कृपया इसे फिर से पढ़ें), 2. आपको google-services.jsonफ़ाइल को रूट फ़ोल्डर में कॉपी करने की ज़रूरत नहीं है , अगर आप इसे अंदर रखते हैं स्वाद फ़ोल्डर जो पूरी तरह से ठीक है। इसके बजाय assembleReleaseआप सिर्फ एक assembleTestReleaseकार्य कर सकते हैं ।
रेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.